我正在尝试从我的MainActivity向服务发送一个意图,然后从该服务开始向BroadcastReceiver广播一个意图。第一个意图被激发,并被服务接收。服务中的广播意图已被激发,但未被BroadcastReceiver接收
以下是我所做的:
BroadcastReceiver代码:
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Inside onReceive of myReceiver: " + intent.getAction());
if (intent.getAction() == "com.utils.myapp.MY_STUFF")
{
// Do something here
}
}
服务代码:
public class MyService extends IntentService {
private static BroadcastReceiver myReceiver = new MyReceiver();
...
@Override
protected void onHandleIntent(Intent intent) {
Log.i(TAG, "Inside onHandleIntent() of service");
String action = intent.getStringExtra("ACTION");
Log.i(TAG, "ACTION: " + action);
if (action == "FIRE_INTENT_TO_RECEIVER")
{
Intent rec_intent = new Intent("com.utils.myapp.MY_STUFF");
sendBroadcast(rec_intent);
}
}
在主要活动中:
Intent serviceIntent = new Intent(this, MyService.class);
serviceIntent.putExtra("ACTION", "FIRE_INTENT_TO_RECEIVER");
this.startService(serviceIntent);
AndroidManifest.xml:
<service
android:name=".MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="FIRE_INTENT_TO_RECEIVER" />
</intent-filter>
</service>
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true"
android:priority="2147483647">
<intent-filter>
<!-- Some actions here-->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
预期结果:应该达到BroadcastReceiver中的onReceive() 实际结果:未达到onReceive()
答案 0 :(得分:0)
我猜该错误正在发生,因为您正在发送隐式意图(您未将MyReceiver.class
指定为广播目标)。另外,您必须在com.utils.myapp.MY_STUFF
中注册动作AndroidManifest.xml
。
发送广播:
Intent rec_intent = new Intent(this, MyReceiver.class);
rec_intent.setAction("com.utils.myapp.MY_STUFF");
sendBroadcast(rec_intent);
AndroidManifest.xml
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true"
android:priority="2147483647">
<intent-filter>
<action android:name="com.utils.myapp.MY_STUFF" /> <!-- Add this line -->
</intent-filter>
</receiver>