【发布时间】:2019-03-22 16:43:52
【问题描述】:
我正在尝试从我的通知中获取“DeleteIntent”回调。 BroadcastReceiver.onReceive 不是从 PendengIntent 调用的,而当使用 sendBroadcast(deleteIntent) 手动启动广播时它可以正常工作。
intent 目标为 Activity(命中 Activity.onNewIntent)时效果很好,但使用它很奇怪,因为当消息关闭时 Activity 进入前台。
请帮助onReceive调用BroadcastReceiver。 它是可见的、导出的和启用的,位于同一个包中。
MyCancelReceiver 类
public class MyCancelReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
Android 清单
<activity android:name=".MainActivity" android:launchMode="singleTask">
<MyCancelReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="notification_cancelled"/>
</intent-filter>
</receiver>
MainActivity
private MyCancelReceiver mReceiver;
@Override
public void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter();
filter.addAction("notification_cancelled");
mReceiver = new MyCancelReceiver();
registerReceiver(mReceiver, filter);
}
@Override
public void onStop() {
super.onStop();
unregisterReceiver(mReceiver);
}
通知创建:
Intent cancelIntent = new Intent(getApplicationContext(), MyCancelReceiver.class);
cancelIntent.setAction("notification_cancelled");
cancelIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent deleteIntent = PendingIntent.getActivity(getApplicationContext(), 0, cancelIntent, PendingIntent.FLAG_CANCEL_CURRENT);
Notification not = new Notification.Builder(getApplicationContext(), Util.ANDROID_CHANNEL_ID)
.setContentTitle(messageTitle)
.setContentText(messageBody)
.setSmallIcon(R.drawable.default)
.setAutoCancel(true)
.setDeleteIntent(deleteIntent)
.setContentIntent(contentIntent)
.build();
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, not);
提前谢谢你。
【问题讨论】:
标签: java android notifications broadcastreceiver