我正在嘗試使用新的通知界面。我在通知中添加了3個按鈕,並且每次單擊它們時我都會將某些內容保存到我的數據庫中。確定Android通知的addAction點擊
通知本身運行良好,並在被調用時顯示,我只是不知道如何捕獲三個不同按鈕點擊中的每一個。
我使用BroadcastReceiver
來捕捉點擊,但我不知道如何判斷哪個按鈕被點擊。
這是AddAction
代碼(我已經排除該通知的其餘部分,因爲它的運作良好) -
//Yes intent
Intent yesReceive = new Intent();
yesReceive.setAction(CUSTOM_INTENT);
Bundle yesBundle = new Bundle();
yesBundle.putInt("userAnswer", 1);//This is the value I want to pass
yesReceive.putExtras(yesBundle);
PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_v, "Yes", pendingIntentYes);
//Maybe intent
Intent maybeReceive = new Intent();
maybeReceive.setAction(CUSTOM_INTENT);
Bundle maybeBundle = new Bundle();
maybeBundle.putInt("userAnswer", 3);//This is the value I want to pass
maybeReceive.putExtras(maybeBundle);
PendingIntent pendingIntentMaybe = PendingIntent.getBroadcast(this, 12345, maybeReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_question, "Partly", pendingIntentMaybe);
//No intent
Intent noReceive = new Intent();
noReceive.setAction(CUSTOM_INTENT);
Bundle noBundle = new Bundle();
noBundle.putInt("userAnswer", 2);//This is the value I want to pass
noReceive.putExtras(noBundle);
PendingIntent pendingIntentNo = PendingIntent.getBroadcast(this, 12345, noReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_x, "No", pendingIntentNo);
這是BroadcastReceiver
的代碼 -
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("shuffTest","I Arrived!!!!");
//Toast.makeText(context, "Alarm worked!!", Toast.LENGTH_LONG).show();
Bundle answerBundle = intent.getExtras();
int userAnswer = answerBundle.getInt("userAnswer");
if(userAnswer == 1)
{
Log.v("shuffTest","Pressed YES");
}
else if(userAnswer == 2)
{
Log.v("shuffTest","Pressed NO");
}
else if(userAnswer == 3)
{
Log.v("shuffTest","Pressed MAYBE");
}
}
}
我已經在清單中註冊了BroadcastReceiver
。 另外,我想提到的是,當我單擊通知中的某個按鈕時,會調用BroadcastReceiver
,但意圖總是包含額外的'2'。
這是notifcation iteslf -
這是奇怪。我在代碼中看不到任何錯誤。如果你改變addAction()的順序(和PendingIntent創建),你還會得到'2'嗎? – Quanturium 2013-03-12 01:24:39
在這種情況下,它只是給了我最後一個addAction()我叫 – Tofira 2013-03-12 08:59:46
我可以爲三個按鈕中的每一個註冊三個BroadcastReceivers,但我真的想避免這種情況。 – Tofira 2013-03-12 09:32:18