Android NotificationListenerService:检测应用程序是否允许侦听通知

Android NotificationListenerService:检测应用程序是否允许侦听通知,android,android-notifications,Android,Android Notifications,我看到一些应用程序有一个小对话框,要求允许应用程序监听通知。该对话框有两个按钮:取消和转到(打开安全设置以允许应用程序侦听通知)。这个对话框是持久的,所以我想它有一种方法来检测应用程序是否被允许。有人能告诉我那个API吗?谢谢Android上的所有应用程序都可以发送通知,甚至没有权限。您在UI中看到的任何对话框都是由每个开发人员实现的(需要特别考虑) 底线是,如果一个应用程序可以发送通知(所有应用程序都可以),那么就没有用于访问的API 除此之外,还有许多其他方面的应用程序权限,这也值得学习。嗨

我看到一些应用程序有一个小对话框,要求允许应用程序监听通知。该对话框有两个按钮:取消和转到(打开安全设置以允许应用程序侦听通知)。这个对话框是持久的,所以我想它有一种方法来检测应用程序是否被允许。有人能告诉我那个API吗?谢谢

Android上的所有应用程序都可以发送通知,甚至没有权限。您在UI中看到的任何对话框都是由每个开发人员实现的(需要特别考虑)

底线是,如果一个应用程序可以发送通知(所有应用程序都可以),那么就没有用于访问的API


除此之外,还有许多其他方面的应用程序权限,这也值得学习。

嗨,我认为没有一种方法可以调用以了解您是否有权限侦听通知,但您可以尝试以下方法:

  • 尝试获取NotificationListenerService实例的引用
  • 现在,如果在预期指针不为null时得到了null指针,那么应该提示一个对话框,要求用户启用安全设置
  • 在“Ok”按钮中添加onClickListener,现在只需
    startActivity(新的意图(“android.settings.ACTION\u NOTIFICATION\u LISTENER\u settings”)

  • 我知道这是一个老问题,但我现在在应用程序中使用的是:

    String notificationListenerString = Settings.Secure.getString(this.getContentResolver(),"enabled_notification_listeners");
    //Check notifications access permission
    if (notificationListenerString == null || !notificationListenerString.contains(getPackageName()))
    {
          //The notification access has not acquired yet!
    }else{
          //Your application has access to the notifications
    }
    
    通过打开“活动”,可以将用户移动到“通知访问权限”
    设置:

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

    从Jelly Bean 4.3到Marshmallow 6.0,这项功能都经过了很好的测试,我在应用程序中使用了它。

    我想你根本不理解我的问题。我不是说发布通知。我说的是阅读通知:dmissunderstood answer你的if语句返回true,但它实际上不在安卓6上