不接受意向广播接收器(Broadcast receiver not receiving intent

2019-08-01 06:01发布

我有两个应用程序,我有完全的控制权。 两者都使用相同的证书签署,并都使用完全相同的意图过滤器。 一位来自片段发送广播,另一种是想接受它,并做一些事情。 然而,这是不工作:

Strings.FILTER_INIT_REGISTER = "com.app.FILTER_INIT_REGISTER"

Intent intent = new Intent(Strings.FILTER_INIT_REGISTER);
getActivity().sendBroadcast(intent);

我已经注册为含ReportingReceiver类应用程序的清单应用程序标签的接收器:

<receiver             
    android:name=".receivers.ReportingReceiver"
    android:exported="true"
    >
        <intent-filter>
            <action android:name="com.app.FILTER_INIT_REGISTER" />
            <category android:name="android.intent.category.DEFAULT" />                
        </intent-filter>
</receiver>

好奇为什么ReportingReceiver类是没有得到的意图电话吗?

Answer 1:

如果您的应用程序只具有服务和接收器,那么这将不会在Android的3.1和更高版本。 原因是,该系统将不会发送广播意图应用是处于停止状态 。 应用程序是在停止状态首次安装时。 它从停止状态当用户手动开始首次应用程序移除。 如果用户强制应用程序停止使用该应用程序管理工具,它返回到停止状态

由于您的应用程序没有活动,也没有办法为用户“开始”吧。 因此,它永远不会到来的停止状态的了。

见http://developer.android.com/about/versions/android-3.1.html#launchcontrols



Answer 2:

由于Android的冰火他对大卫瓦瑟的回答评论说...有解决此问题的方法。

只需添加下面的标记到呼叫意图。 这将确保你也达不到广播接收机从“停止”的应用程序。

http://developer.android.com/reference/android/content/Intent.html#FLAG_INCLUDE_STOPPED_PACKAGES

你可以阅读更多关于此的Android 3.1的变化在这里

http://developer.android.com/about/versions/android-3.1.html#launchcontrols

和这里

http://code.google.com/p/android/issues/detail?id=18225



文章来源: Broadcast receiver not receiving intent