高端网站建设 飞沐安全优化大师下载
Android开发检查是否开启通知栏权限
检查通知权限很场景,几乎每个app都有。 顺便提供跳到设置里面开启通知栏
一、查询是否有通知栏权限:
@RequiresApi(api = Build.VERSION_CODES.KITKAT)public static boolean isNotificationEnabled(Context context) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//8.0手机以上if (((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).getImportance() == NotificationManager.IMPORTANCE_NONE) {return false;}}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 (Exception e) {e.printStackTrace();}return false;}
二、跳到设置里面开启通知
public static void startAppNotifySetting(Context mContext) {try {String packageName = mContext.getPackageName();int uid = mContext.getApplicationInfo().uid;Intent intent = new Intent();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);intent.putExtra(Settings.EXTRA_APP_PACKAGE, packageName);intent.putExtra(Settings.EXTRA_CHANNEL_ID, uid);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");intent.putExtra("app_package", packageName);intent.putExtra("app_uid", uid);} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT){intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setData(Uri.fromParts("package", packageName, null));} else {intent.setAction(Settings.ACTION_SETTINGS);}mContext.startActivity(intent);} catch (Exception e){e.printStackTrace();Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");intent.setData(Uri.fromParts("package", mContext.getPackageName(), null));mContext.startActivity(intent);}}