Android判断当前应用通知是否 4000 打开,跳转到打开通知界面
2017-11-16 15:41
806 查看
判断当前应用通知是否打开方法:
private boolean isNotificationEnabled(Context context) {
String CHECK_OP_NO_THROW = "checkOpNoThrow";
String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
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;
} 返回值为true时,通知栏打开,false未打开。
跳转设置页面:
private void goToSet(){
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;
}
}
private boolean isNotificationEnabled(Context context) {
String CHECK_OP_NO_THROW = "checkOpNoThrow";
String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
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;
} 返回值为true时,通知栏打开,false未打开。
跳转设置页面:
private void goToSet(){
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;
}
}
相关文章推荐
- Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案
- Android判断当前界面是否在launcher,及获取应用包名入口Activity
- Android 判断当前网络连接是否可用、打开设置网络界面
- Android 判断应用程序获取通知栏权限是否开启,以及如何跳转到应用程序设置界面
- Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案
- Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案
- Android打开界面时判断是否登录,未登录跳转登录界面,登录完成后直接跳转要打开的界面
- Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案
- android判断当前网络状态及跳转到设置界面
- Android判断网络是否打开,并打开设置网络界面
- 判断应用是否开启通知栏及跳转到设置页面
- android:检查系统是否开启消息通知权限,app应用点击开启通知时跳转到app详情页面开启权限
- android 小技巧之 --- 判断当前界面是否是桌面
- Android中判断应用是否第一次打开 闪屏页
- Android判断网络是否打开,并打开设置网络界面
- (android实战)判断当前task中的运行的activity是否为当前应用
- Android判断当前应用是否在前台
- android判断当前界面是否是桌面(主页)
- Android 判断通知栏是否打开及前往设置页面
- android 跳转到应用通知设置界面