14

NotificationListenerService を実装して、通知バーに投稿されるすべての通知にアクセスしたいと考えています。

この呼び出しで設定の通知へのアクセスを有効にする必要があることを理解しています:

startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));

ユーザーがアプリの通知アクセスを有効にしているかどうかを確認する方法はありますか?

4

4 に答える 4

14

これを解決するためのちょっとしたハックを見つけることができました。のソースを確認すると、と注釈が付けられて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 で動作しています。

于 2013-12-13T20:17:00.253 に答える
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");
于 2016-04-19T20:56:11.197 に答える
0

試す:

NotificationManagerCompat.from(context).areNotificationsEnabled()
于 2016-10-27T13:54:48.487 に答える