Android 通知栏权限,适配大部分机型,Android 8.0/O,oppo、vivo等个性机型

Android 通知栏权限,适配大部分机型,Android 8.0/O,oppo、vivo等个性机型_第1张图片
你瞅啥?
/**
   * 前往设置中心
     *
     * @param activity 上下文
     * @param requestCode 请求码 用来传给startActivityForResult作为回调标识符,不需要回调处理的不用设置,跳转直接用startActivity即可
     */
    public void startAppSetting(Activity activity, int requestCode) {
        try {
            // 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
            Intent intent = new Intent();
            intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
            if(android.os.Build.VERSION.SDK_INT  >= Build.VERSION_CODES.LOLLIPOP){
                //这种方案适用于 API 26, 即8.0(含8.0)以上可以用
                intent.putExtra(EXTRA_APP_PACKAGE, activity.getPackageName());
                intent.putExtra(EXTRA_CHANNEL_ID, activity.getApplicationInfo().uid);
                //这种方案适用于 API21——25,即 5.0——7.1 之间的版本可以使用
                intent.putExtra("app_package", activity.getPackageName());
                intent.putExtra("app_uid", activity.getApplicationInfo().uid);
            } else {
                //4.4以下没有从app跳转到应用通知设置页面的Action,可考虑跳转到应用详情页面,
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                if (Build.VERSION.SDK_INT >= 9) {
                intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                    intent.setData(Uri.fromParts("package", activity.getPackageName(), null));
                } else if (Build.VERSION.SDK_INT <= 8) {
                    intent.setAction(Intent.ACTION_VIEW);
                    intent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
                    intent.putExtra("com.android.settings.ApplicationPkgName", activity.getPackageName());
                }
            }
            activity.startActivityForResult(intent,requestCode);
         } catch (Exception e) {
            e.printStackTrace();
            // 出现异常则跳转到应用设置界面:锤子坚果3——OC105 API25
            Intent intent = new Intent();
             //下面这种方案是直接跳转到当前应用的设置界面。
            //https://blog.csdn.net/ysy950803/article/details/71910806
            intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
            intent.setData(uri);
            activity.startActivityForResult(intent,requestCode);
        }
}
通过以上代码,即可实现个性机型正常跳转到通知栏权限设置界面
Android 通知栏权限,适配大部分机型,Android 8.0/O,oppo、vivo等个性机型_第2张图片
你的答案就是我~

记得双击~么么哒~~~

你可能感兴趣的:(Android 通知栏权限,适配大部分机型,Android 8.0/O,oppo、vivo等个性机型)