1. 程式人生 > >獲取App通知許可權是否開啟的方法

獲取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'

鄙人的專案裡只用到了這3個support包,如果大家有其餘的,都要改成24以上。
然後再在程式碼中通過NotificationManagerCompat包獲取是否打開了通知顯示許可權:

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

要注意的是,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);