检查用户是否已授予NotificationListener访问我的应用程序的权限

时间:2013-11-22 09:49:18

标签: android service notifications settings

我正在使用此代码打开通知侦听器设置:

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

我想检查用户是否已授予我的应用授权。 我已经尝试检查我的NotificationListenerService是否正在运行,但它似乎被系统暂停并重新启动(即使我返回START_STICKY)。

3 个答案:

答案 0 :(得分:22)

唯一正确的方法是检查安全设置:

ComponentName cn = new ComponentName(context, YourNotificationListenerService.class);
String flat = Settings.Secure.getString(context.getContentResolver(), "enabled_notification_listeners");
final boolean enabled = flat != null && flat.contains(cn.flattenToString());

答案 1 :(得分:8)

我错了,检查服务是否正常运行:

    private boolean isNLServiceRunning() {
        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

        for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
             if (NLService.class.getName().equals(service.service.getClassName())) {
                  return true;
             }
        }

        return false;
    }

答案 2 :(得分:0)

如果您使用的是androidx,则可以使用

NotificationManagerCompat.getEnabledListenerPackages(Context context)

检查是否启用了侦听器。 Source