【发布时间】:2016-12-27 08:54:32
【问题描述】:
我有一个Service,从那里我将广播intent 发送到BroadcastReceiver,然后这个广播接收器将它发送回BroadcastReceiver 在Service 中指定的@。
代码如下:
private Notification getNotificationAU() {
mBuilder =
new NotificationCompat.Builder(getBaseContext())
.setSmallIcon(R.mipmap.app_icon_1)
.setContentTitle("title")
.setContentText(***);
// for action button
Intent actionIntent = new Intent(getBaseContext(), BroadcastSender.class);
PendingIntent actionPendingIntent = PendingIntent
.getBroadcast(getBaseContext(),
0, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setAutoCancel(true);
mBuilder.addAction(***, "***", actionPendingIntent);
return mBuilder.build();
}
这里是BroadcastSender.class 代码:
public class BroadcastSender extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Broadcast Received by BroadcastSender", Toast.LENGTH_SHORT).show();
// send back to your class
Intent newIntent = new Intent();
newIntent.setAction(context.getString(R.string.broadcast_id));
context.sendBroadcast(newIntent);
context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
Toast.makeText(context, "Broadcast sent back.", Toast.LENGTH_SHORT).show();
}
}
both上面的Toasts 正在显示。
这是BroadcastReceiver 里面的Service:
public class MyBroadcastReceiver extends BroadcastReceiver {
public MyBroadcastReceiver(){
super();
}
@Override public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "onReceive() in service called", Toast.LENGTH_SHORT).show();
if (intent.getAction() != null && intent.getAction().equals(getString(R.string.broadcast_id_2))) {
...
...
...
} else if (intent.getAction() != null && intent.getAction().equals(getString(R.string.broadcast_id))) {
// perform the task
} else {
Toast.makeText(context, "Intent is null.", Toast.LENGTH_SHORT).show();
}
}
}
这是strings.xml:
<string name="broadcast_id">***</string>
这里是AndroidManifest.xml:
<receiver android:name=".BroadcastSender"/>
问题是MyBroadcastReceiver 没有接收到任何广播,即使两者具有相同的广播 ID R.string.broadcast_id。
为什么收不到BroadcastSender.class发送的广播?
请告诉我。
【问题讨论】:
-
如何注册和注销广播接收器?你能显示那个代码吗
-
能否将您在服务中注册 MyBroadcastReceiver 的代码粘贴过来?
-
感谢您发现这个愚蠢的错误!我在注册广播接收器时忘记添加
myIntentFilter.addAction(getString(R.string.broadcast_id));。现在可以了! -
欢迎兄弟
-
请回答您自己的问题并接受该答案。它将从未回答的问题列表中删除此问题。
标签: android broadcastreceiver android-pendingintent android-broadcast android-broadcastreceiver