
你瞅啥?
/**
* 前往設(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è)置界面

你的答案就是我~