未触发通知操作意图

时间:2019-04-07 22:28:42

标签: java android android-notifications

点击通知操作不会触发BroadcastReceiver运行

Intent cancelIntent = new Intent(c, NotificationBroadcast.class);
cancelIntent.setAction(CANCEL_UPLOAD);
cancelIntent.putExtra(EXTRA_REQUEST, new Request(request));
//c is ApplicationContext
PendingIntent cancel = getBroadcast(c,1, cancelIntent,
                FLAG_CANCEL_CURRENT);

nb.addAction(R.drawable.close, c.getString(R.string.cancel), cancel);

NotificationBroadcast实施

public class AppNotification {
   public static class NotificationBroadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Request cancel = cancelRequest((Request) intent.getParcelableExtra(EXTRA_REQUEST));
            if (CANCEL_UPLOAD.equals(intent.getAction()))
                cancel.clearFlag(FLAG_REQUEST);
            updateRequest(context, cancel);
        }
    }
}

我希望单击通知动作但未调用它时会调用NotificationBroadcast#onReceive;

1 个答案:

答案 0 :(得分:0)

  

NotificationBroadcast未注册,因为我使用的是明确意图

没关系。需要通过清单或通过registerReceiver()上的Context调用来注册所有接收者。在您的情况下,由于您正在使用PendingIntent进行通知操作,因此需要使用清单选项。

清单中的<receiver>不需要<intent-filter>,因为您正在使用显式广播。但是,<receiver>元素必须仍然存在。

此外,由于您选择让接收者成为static类,因此android:name的{​​{1}}需要考虑到这一点。