0
我正在創建包含兩個按鈕(是/否)的自定義視圖的通知。點擊這些按鈕將啓動一個PendingIntent,然後將根據點擊按鈕繼續。 但是PendingIntent.getBroadcast()總是返回第一個Intent(這樣PendingIntent調用的BroadcastReceiver總是認爲第一個聲明的按鈕「no」被點擊),這可能是由於缺少標誌。PendingIntent.getBroadcast返回現有PendingIntent
如何解決這個問題?我需要另一臺BroadcastReceiver嗎?
// create notification with custom view and two buttons
Intent buttonNoReceiver = new Intent(context, NotificationAfterReceiver.class);
buttonNoReceiver.putExtra(AppUtil.EXTRAS_EVENT_ID, event.getEventID());
buttonNoReceiver.putExtra(EXTRAS_BUTTON, "no");
PendingIntent pendingNoIntent = PendingIntent.getBroadcast(context, event.getEventID(), buttonNoReceiver, 0);
views.setOnClickPendingIntent(R.id.btn_no, pendingNoIntent);
Intent buttonYesReceiver = new Intent(context, NotificationAfterReceiver.class);
buttonYesReceiver.putExtra(AppUtil.EXTRAS_EVENT_ID, event.getEventID());
buttonYesReceiver.putExtra(EXTRAS_BUTTON, "yes");
PendingIntent pendingYesIntent = PendingIntent.getBroadcast(context, event.getEventID(), buttonYesReceiver, 0);
views.setOnClickPendingIntent(R.id.btn_yes, pendingYesIntent);
NotificationAfterReceiver
public class NotificationAfterReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String button = null;
Bundle extras = intent.getExtras();
if (extras != null) {
button = extras.getString(NotificationUtil.EXTRAS_BUTTON);
}
if (button.equals("yes")) {
values.put(DatabaseHelper.KEY_EVENTS_FULFILLED, 1);
Log.i("NotificationAfterReceiver", "button yes");
} else if (button.equals("no")) {
values.put(DatabaseHelper.KEY_EVENTS_FULFILLED, 0);
Log.i("NotificationAfterReceiver", "button no");
}
}
}
調用getBroadcast()時使用不同的'requestCode'() – pskink
我應該使用哪些代碼?我想默認的是1,但這會導致同樣的問題。使用隨機數似乎不是一個很好的解決方案..? – Chris
使用0表示「否」PendingIntent,使用1表示「是」PendingIntent – pskink