Android(安卓)应用通知权限是否开启以及跳转到设置界面
16lz
2021-01-26
因为项目用到推送功能,所以需求是知道用户是否开启了通知栏的权限,并且提供滑动按钮进行跳转以便用户进行关闭或者开启。
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;}
这个功能不是特别重要,但是有时候确实有这样的需求。
本文转载 出处
更多相关文章
- [Android7.1] Gitolite + Repo 管理 Android(安卓)源码
- android简单的请求手机权限封装
- 【Android】 设置App字体不跟随系统字体改变
- android 监控应用进程
- 关于Linux环境下的android真机调试
- android 系统 makefile文件(Android.mk)组织结构
- [PX3][Android7.1] 调试笔记 去除USB权限弹窗
- 【Android(安卓)并发编程】android系统架构和四大组件详解
- Android(安卓)8.0 适配安装未知来源权限 canRequestPackageInsta