【问题标题】:Broadcast receiver not receiving intent广播接收器未收到意图
【发布时间】:2012-11-14 20:04:05
【问题描述】:

我有两个可以完全控制的应用程序。两者都使用相同的证书签名,并且都使用完全相同的意图过滤器。一个从片段发送广播,另一个假设接收它并做某事。然而这不起作用:

Strings.FILTER_INIT_REGISTER = "com.app.FILTER_INIT_REGISTER"

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

我已经在包含 ReportingReceiver 类的应用的 Manifest 应用标签中注册了接收器:

<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 类没有收到意图调用?

【问题讨论】:

  • 如果您在广播时未指定任何类别,我不确定广播的类别是否为“android.intent.category.DEFAULT”。您是否尝试在广播时删除类别标签或添加类别(Intent.CATEGORY_DEFAULT)?
  • Manifest 中的应用程序标签包含什么?
  • App 标签中只有一个服务和相应的接收者标签。
  • 去掉类别装饰没有区别。

标签: android android-intent broadcastreceiver


【解决方案1】:

如果您的应用程序只有一个服务和接收器,那么这在 Android 3.1 及更高版本中将不起作用。原因是系统不会向处于 STOPPED STATE 的应用程序发送广播 Intent。首次安装时,应用程序处于STOPPED STATE。当用户第一次手动启动应用程序时,它会从 STOPPED STATE 中移除。如果用户强制应用程序停止使用应用程序管理器工具,则返回到STOPPED STATE

由于您的应用程序没有活动,因此用户无法“启动”它。因此它永远不会退出停止状态。

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

【讨论】:

  • 将此添加到意图中:intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);感谢您为我指明正确的方向!
  • @Android Addict:你能告诉我为什么广播接收器停止从服务接收意图,如果服务中发生任何网络异常,无论我是否在其他情况下都发送广播异常。
  • @NeonWarge 如果您遇到此处未回答的问题,您应该打开一个新问题。您的评论并不是特别有用,因为您对您的情况只字未提。无论如何,在这里评论您的情况并不是正确的做法。请打开一个新问题。
【解决方案2】:

正如 Android Addict 在他对 David Wasser 的回答的评论中所说的那样......有一种方法可以解决这种行为。

只需将以下标志添加到调用 Intent。这将确保您也可以从“停止”的应用程序中访问广播接收器。

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

【讨论】:

  • 谢谢,中间链接将我带到请注意,系统会将 FLAG_EXCLUDE_STOPPED_PACKAGES 添加到所有广播意图中。,这正是我所寻找的。​​span>
猜你喜欢
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多