获取App通知权限是否开启的方法

Posted Red风信子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取App通知权限是否开启的方法相关的知识,希望对你有一定的参考价值。

我们有时候需要获知用户是否允许了App在通知栏显示通知,设置入口一般见于AppInfo即应用详情页面。 
方法来自于官方的support包,必须先更新build.gradle中的support包版本到24以上:

compile 'com.android.support:appcompat-v7:24.0.0'
compile 'com.android.support:support-annotations:24.0.0'
compile 'com.android.support:support-v4:24.0.0'
  • 1
  • 2
  • 3

鄙人的项目里只用到了这3个support包,如果大家有其余的,都要改成24以上。 
然后再在代码中通过NotificationManagerCompat包获取是否打开了通知显示权限:

NotificationManagerCompat manager = NotificationManagerCompat.from(App.getInstance().getContext());
boolean isOpened = manager.areNotificationsEnabled();
  • 1
  • 2

要注意的是,areNotificationsEnabled方法的有效性官方只最低支持到API 19,低于19的仍可调用此方法不过只会返回true,即默认为用户已经开启了通知。 
查了各种资料,目前暂时没有办法获取19以下的系统是否开启了某个App的通知显示权限。

最后,附上打开应用详情页面的代码:

// 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", App.getInstance().getApplication().getPackageName(), null);
intent.setData(uri);
startActivity(intent);

以上是关于获取App通知权限是否开启的方法的主要内容,如果未能解决你的问题,请参考以下文章

android 设置整个app的通知栏Notification 的声音和震动用啥方法

通知和消息的显示

vivo新装的app消息通知要手动打开?

Android推送通知权限判断及跳转到权限设置界面(完善兼容8.0)

我的GPS定位 我开了为啥还显示定位失败

Android APP 获得权限