通知侦听器的 startActivityForResult

Posted

技术标签:

【中文标题】通知侦听器的 startActivityForResult【英文标题】:startActivityForResult for Notification Listener 【发布时间】:2017-04-27 07:55:12 【问题描述】:

是否可以从通知侦听器设置屏幕获取结果?

目前,我的项目正在使用

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

我尝试使用 startActivityForResult,但无法为我指定的 requestCode 获得 RESULT_OK resultCode。

我想知道我的应用是否获得了通知访问权限(当我返回应用中的活动时,切换按钮是打开还是关闭)

【问题讨论】:

【参考方案1】:

在 onActivityResult 中,您可以通过执行以下操作获取启用的侦听器列表。

    String listeners = Settings.Secure.getString(getContentResolver(),
            "enabled_notification_listeners");
    if (listeners != null)
        CommonMethods.printLog("e",TAG,"Listeners are : " + listeners);

然后检查是否已授予访问权限。如果授予访问权限,您自己的侦听器将在此列表中。

我无法从通知侦听器设置屏幕获得 RESULT_OK 结果。

【讨论】:

嘿。这行得通!我仍然想知道是否有可能得到 RESULT_OK 的响应。不过我不能 +1 你的答案。 什么是"enabled_notification_listeners"【参考方案2】:

我尝试使用 startActivityForResult,但无法为我指定的 requestCode 获得 RESULT_OK resultCode。

很少有活动与startActivityForResult() 一起使用。 双方都必须实现对它的支持。除非某些文档(例如,关于 Intent 操作的文档)表明活动有一些输出,否则您应该假设 startActivityForResult() 不会产生有用的影响。

【讨论】:

谢谢!我想,但我不能 +1 给出的答案/回复。

以上是关于通知侦听器的 startActivityForResult的主要内容,如果未能解决你的问题,请参考以下文章

通知侦听器的 startActivityForResult

如何将事件侦听器添加到本地反应原生通知

单击侦听器上的通知 RemoteView

Android 通知操作按钮单击侦听器

调度 KeyEvent(或任何类型的事件?)时不会通知侦听器

实现队列时,Laravel通知侦听器无用