【问题标题】:Is it possible to send a LocalBroadcast from a notification action?是否可以通过通知操作发送 LocalBroadcast?
【发布时间】:2014-03-15 00:10:18
【问题描述】:

我想在单击通知内的按钮时发送 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

【问题讨论】:

    标签: android notifications broadcast android-pendingintent


    【解决方案1】:

    没有。

    首先,LocalBroadcastManager 是支持包(您添加到应用程序的可选库)的一部分,而不是系统本身的一部分。

    其次,即使是,通知服务也会被所有应用程序使用。由于它是共享资源,因此在您发布通知时不会发生任何“本地”事件。

    【讨论】:

    • 谢谢。这是有道理的。
    猜你喜欢
    • 2018-10-25
    • 2021-01-07
    • 1970-01-01
    • 2019-08-25
    • 2019-06-19
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多