点击通知操作不会触发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;
答案 0 :(得分:0)
NotificationBroadcast未注册,因为我使用的是明确意图
没关系。需要通过清单或通过registerReceiver()
上的Context
调用来注册所有接收者。在您的情况下,由于您正在使用PendingIntent
进行通知操作,因此需要使用清单选项。
清单中的<receiver>
不需要<intent-filter>
,因为您正在使用显式广播。但是,<receiver>
元素必须仍然存在。
此外,由于您选择让接收者成为static
类,因此android:name
的{{1}}需要考虑到这一点。