因为项目用到推送功能,所以需求是知道用户是否开启了通知栏的权限,并且提供滑动按钮进行跳转以便用户进行关闭或者开启。

1.获取通知栏权限是否开启:

/** * 获取通知栏权限是否开启 *  */public class NotificationsUtils {   private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";   private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";   @SuppressLint("NewApi")   public static boolean isNotificationEnabled(Context context) {      AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);      ApplicationInfo appInfo = context.getApplicationInfo();      String pkg = context.getApplicationContext().getPackageName();      int uid = appInfo.uid;      Class appOpsClass = null;      /* Context.APP_OPS_MANAGER */      try {         appOpsClass = Class.forName(AppOpsManager.class.getName());         Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE,               String.class);         Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);         int value = (Integer) opPostNotificationValue.get(Integer.class);         return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) == AppOpsManager.MODE_ALLOWED);      } catch (ClassNotFoundException e) {         e.printStackTrace();      } catch (NoSuchMethodException e) {         e.printStackTrace();      } catch (NoSuchFieldException e) {         e.printStackTrace();      } catch (InvocationTargetException e) {         e.printStackTrace();      } catch (IllegalAccessException e) {         e.printStackTrace();      }      return false;   }}
2.进入系统设置界面
    
protected void requestPermission(int requestCode) {   // TODO Auto-generated method stub   // 6.0以上系统才可以判断权限   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BASE) {      // 进入设置系统应用权限界面      Intent intent = new Intent(Settings.ACTION_SETTINGS);      startActivity(intent);      return;   } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {// 运行系统在5.x环境使用      // 进入设置系统应用权限界面      Intent intent = new Intent(Settings.ACTION_SETTINGS);      startActivity(intent);      return;   }   return;}
 这个功能不是特别重要,但是有时候确实有这样的需求。

本文转载 出处


更多相关文章

  1. [Android7.1] Gitolite + Repo 管理 Android(安卓)源码
  2. android简单的请求手机权限封装
  3. 【Android】 设置App字体不跟随系统字体改变
  4. android 监控应用进程
  5. 关于Linux环境下的android真机调试
  6. android 系统 makefile文件(Android.mk)组织结构
  7. [PX3][Android7.1] 调试笔记 去除USB权限弹窗
  8. 【Android(安卓)并发编程】android系统架构和四大组件详解
  9. Android(安卓)8.0 适配安装未知来源权限 canRequestPackageInsta

随机推荐

  1. Android,TextView的所有属性和方法
  2. Android根据 uri 获得文件真实路径
  3. android源码浅析--notification
  4. Android腾讯微博客户端开发一:在下方的Ta
  5. ViewBinding的简单使用
  6. SystemService
  7. Android(安卓)Studio Error 安装后Gradle
  8. Android平台开发-Power management-电源
  9. android的init.rc文件的语法
  10. Android短信发送流程之长短信发送(原)