NotificationListenerService を実装して、通知バーに投稿されるすべての通知にアクセスしたいと考えています。
この呼び出しで設定の通知へのアクセスを有効にする必要があることを理解しています:
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
ユーザーがアプリの通知アクセスを有効にしているかどうかを確認する方法はありますか?
NotificationListenerService を実装して、通知バーに投稿されるすべての通知にアクセスしたいと考えています。
この呼び出しで設定の通知へのアクセスを有効にする必要があることを理解しています:
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
ユーザーがアプリの通知アクセスを有効にしているかどうかを確認する方法はありますか?
これを解決するためのちょっとしたハックを見つけることができました。のソースを確認すると、と注釈が付けられてSettings.Secure
いることがわかります。これが意図的なものかどうかはわかりません。関連するトピックについて、CommonsWare は別の回答で、この設定の開始を妨げるバグがあると言及しているので、意図的ではないと思います。ENABLED_NOTIFICATION_LISTENERS
@hide
とにかく、これを回避するために、ENABLED_NOTIFICATION_LISTENERS
次の文字列値を使用して、有効な通知リスナーの現在のリストを取得するだけでした。
String enabledListeners = Settings.Secure.getString(context.getContentResolver(),
"enabled_notification_listeners");
次に、サービスがリストにあるかどうかを確認するだけです。
18 以上のすべての API でこれをテストしたわけではありませんが、Android 4.4.2 で動作しています。
おそらく API 19 (4.4) 以降用です。API 21(5.0)で試したが
String enabledListeners = Settings.Secure.getString(context.getContentResolver(),
"enabled_notification_listeners");
「確保」が赤くなっていました。使用したい場合は、次を使用する必要があります。
String enabledNotificationListeners =
android.provider.Settings.Secure.getString(context.getContentResolver(),
"enabled_notification_listeners");
試す:
NotificationManagerCompat.from(context).areNotificationsEnabled()