我已经在我的清单中声明了我的接收者:
<receiver
android:name=".MyTestReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.ACTION_TEST"/>
</intent-filter>
</receiver>
这是我的MyTestReceiver类:
public class MyTestReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ("com.example.ACTION_TEST".equals(action)) {
Toast.makeText(context, "Test!", Toast.LENGTH_SHORT).show();
}
}
}
但是当我从我的应用程序中的其他地方执行此代码时:
Intent intent = new Intent("com.example.ACTION_TEST");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
...没有接收到本地广播(即,未显示吐司)。
问题:
- 是否可以在清单中注册本地广播接收器?
- 如果是这样,我是否错误地声明了我的本地广播接收器?
- 如果无法在清单中声明本地广播接收器,而是在我的
Application
子类中声明它,它是否具有与清单中声明的接收器相同的“范围”?(我的意思是,它会在与清单中声明的所有相同条件/情况下接收广播吗?) - 如果在清单中指定接收器与在我的子类中指定接收器之间存在差异
Application
,我是否需要使用一般(非本地)广播而不是本地广播?(在实际应用中,当我的 IntentService 完成工作时会发送本地广播。IntentService 将由 FCM 推送消息触发。)
注意-我似乎在文档中可以找到的所有内容是:
注意:要注册本地广播,请致电
LocalBroadcastManager.registerReceiver(BroadcastReceiver, IntentFilter)
。
...这并没有解决您是否可以在清单中指定接收者的主要问题。