【问题标题】:Broadcast intents not received by a service服务未收到广播意图
【发布时间】:2011-01-10 05:59:55
【问题描述】:

我有一个发送广播意图的 Android 服务。我试图在另一个应用程序中获得这些意图,这是一个 Android 服务。我在清单中写了这个:

<!-- Service -->
<service android:enabled="true" android:name="...MyService"></service>

<!-- Receiver -->
<receiver android:name="...MyReceiver">
   <intent-filter>
      <action android:name="..."></action>
      <action android:name="..."></action>
   </intent-filter>
</receiver>

这在我的 MyReceiver 类中:

public class ScannerBroadcastReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      // Process action.
      Log.d(Globals.LOG_TAG, "Intent received.");
      ...

不幸的是,我从未调用过 onReceive 方法。知道为什么吗? 我从另一个测试应用程序启动此服务,因此将其设置为 Android 库。服务已正确启动,但此接收器没有收到任何内容。知道我做错了什么吗? 谢谢!

【问题讨论】:

  • 您可能没有正确注册 IntentReceiver,或者您正在广播一个配置错误的意图。您也应该发布代码的这些部分。
  • 我没有注册接收器。当它在清单中时应该没有必要......当我编写的其他应用程序接收到它时,意图被正确广播......

标签: android android-intent broadcastreceiver


【解决方案1】:

在清单中必须是:android:name=".[package].ScannerBroadcastReceiver"

【讨论】:

  • 对不起,我的错。似乎我忘记将类重命名为 MyService。在代码中这是正确的。
【解决方案2】:

我解决了这个问题,我想这是因为这个项目被设置为一个库。如果我不以这种方式设置它,则正确接收到意图。我还没有在任何地方读到过这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多