- 1.判断是否有通知权限
官方只最低支持到API 19(4.4),低于19的只会返回true,目前暂时没有办法获取19以下的系统是否开启了某个App的通知显示权限
/**
* 获取通知权限
*/
public static boolean checkNotifySetting(Context context) {
NotificationManagerCompat manager = NotificationManagerCompat.from(context);
return manager.areNotificationsEnabled();
}
- 2.跳转权限设置
如果没有权限设置页面跳转到应用设置页面
public static void goToSet(Context context){
try {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
//这种方案适用于 API 26, 即8.0(含8.0)以上可以用
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
intent.putExtra(Notification.EXTRA_CHANNEL_ID, context.getApplicationInfo().uid);
//这种方案适用于 API21——25,即 5.0——7.1 之间的版本可以使用
intent.putExtra("app_package", context.getPackageName());
intent.putExtra("app_uid", context.getApplicationInfo().uid);
context.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
try {
// 出现异常则跳转到应用设置界面:锤子坚果3——OC105 API25
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
context.startActivity(intent);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
网友评论