当APP中有推送的时候就要考虑到通知权限是否用户有没有开启权限的情况,下面就是对判断用户是否开启权限并且跳转到权限设置界面的代码
if (ifHavePermmisson) {//有权限的话就直接放过
//这里是已经有权限的逻辑
}else{//没有权限就跳转到
if (Build.VERSION.SDK_INT >= 26) {
//这种方案适用于 API 26, 即8.0(含8.0)以上可以用,由于看别人发的全都是直接调用apk的,只能是在compileSdkVersion>=28的时候才能用,这里我做了一些兼容,直接把字符串给粘贴了过来
Intent intent = new Intent();
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("android.provider.extra.APP_PACKAGE", getPackageName());
intent.putExtra("android.provider.extra.CHANNEL_ID", getApplicationInfo().uid);
startActivity(intent);
} else {
toPermissionSetting(this);
}
}
/**
* 跳转到权限设置
*
* @param activity
*/
public static void toPermissionSetting(Activity activity) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
toSystemConfig(activity);
} else {
try {
toApplicationInfo(activity);
} catch (Exception e) {
e.printStackTrace();
toSystemConfig(activity);
}
}
}
/**
* 应用信息界面
*
* @param activity
*/
public static void toApplicationInfo(Activity activity) {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
localIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
localIntent.setData(Uri.fromParts("package", activity.getPackageName(), null));
activity.startActivity(localIntent);
}
网友评论