Android 通知欄權(quán)限,適配大部分機型,Android 8.0/O,oppo、vivo等個性機型

你瞅啥?
/**
   * 前往設(shè)置中心
     *
     * @param activity 上下文
     * @param requestCode 請求碼 用來傳給startActivityForResult作為回調(diào)標(biāo)識符,不需要回調(diào)處理的不用設(shè)置,跳轉(zhuǎn)直接用startActivity即可
     */
    public void startAppSetting(Activity activity, int requestCode) {
        try {
            // 根據(jù)isOpened結(jié)果,判斷是否需要提醒用戶跳轉(zhuǎn)AppInfo頁面,去打開App通知權(quán)限
            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跳轉(zhuǎn)到應(yīng)用通知設(shè)置頁面的Action,可考慮跳轉(zhuǎn)到應(yīng)用詳情頁面,
                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();
            // 出現(xiàn)異常則跳轉(zhuǎn)到應(yīng)用設(shè)置界面:錘子堅果3——OC105 API25
            Intent intent = new Intent();
             //下面這種方案是直接跳轉(zhuǎn)到當(dāng)前應(yīng)用的設(shè)置界面。
            //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);
        }
}
通過以上代碼,即可實現(xiàn)個性機型正常跳轉(zhuǎn)到通知欄權(quán)限設(shè)置界面
你的答案就是我~

記得雙擊~么么噠~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容