我想在点击通知内的按钮时发送LocalBroadcast。我知道如何使用常规广播发送LocalBroadcast,但我想将广播保留在我的应用程序内。可以吗?
我的代码大致如下:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setContentTitle("Title")
.setContentText("content")
.setSmallIcon(R.drawable.icon1)
.setContentIntent(pIntent)
.setAutoCancel(true);
Intent myButtonIntent = new Intent(BUTTON_PRESSED);
// the following line gives me a normal broadcast, not a LocalBroadcast
PendingIntent myButtonpIntent = PendingIntent.getBroadcast(context, 12345, myButtonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.addAction(R.drawable.icon2, "OK", myButtonpIntent);
Notification notification = notificationBuilder.build();
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
并且:
BroadcastReceiver bReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(BUTTON_PRESSED)) {
// do something
}
}
};
LocalBroadcastManager bManager = LocalBroadcastManager.getInstance(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BUTTON_PRESSED);
bManager.registerReceiver(bReceiver, intentFilter); // I want to use the LocalBroadcastManager
// registerReceiver(bReceiver, intentFilter); // Instead, I have to use this line for a non-local broadcast
2条答案
按热度按时间xriantvc1#
没有。
首先,
LocalBroadcastManager
是支持包(添加到应用程序中的 * 可选 * 库)的一部分,而不是系统本身的一部分。其次,即使是这样,通知服务也是由所有应用程序使用的,因为它是一个共享资源,所以当你发布通知时不会发生任何“本地”的事情。
pod7payv2#
这可能有用(对我有用)
将您的BroadcastReceiver添加到manifest.xml
创建通知和添加操作(.addaction())并将广播发送到BroadcastReceiver
(you可以使用辅助功能)
接收操作并根据通知操作使用LocalBroadcastManager创建LocalBroadcast
现在,您可以在连接到BroadcastReceiver的任何活动中接收LocalBroadcast,如下所示:
这个问题是8年前的,但这是我现在需要的,这是我如何做到的,谢谢阅读