2

我正在構建一個報警應用程序。我現在添加的功能之一就是鬧鈴的音量。當用戶設置鬧鐘時,他們可以用SeekBar選擇鬧鐘的音量。所以,當警報熄滅時,它的音量應該設置爲用戶設置的值。爲此,我需要知道已經調用了哪個特定的警報。我已經從數據庫中識別出每個PendingIntent與警報的ID。我的問題是我不知道如何在鬧鐘響起後再次找回這個ID。如何獲取由AlarmManager調用的唯一pendingIntent的ID?

正如你所看到的,我這是怎麼識別每一個的PendingIntent通過傳遞alarm.getID()

PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(
ChangeAlarmActivity.this, (int)alarm.getID(), alarmIntent, 0); 
在我的活動

所以被稱爲當警報響起時我要像做

int id = pendingIntent.getID(); 
Alarm alarm = database.getAlarm(id); 
int volume = alarm.getVolume(); 

因此,如何在警報開啓後調用的Activity中獲取PendingIntent的唯一標識符?換句話說,我怎麼知道哪個鬧鐘正在被觸發?

回答

2

首先,原諒我的英語,這不是很好。 我認爲你很可能已經找到了解決這個問題的解決方案,但我有同樣的疑問,我無法很容易地找出答案。所以經過很多研究,我找出了一條路。對於檢索來自警報器的ID發射是可能把一個ID的意圖:

// create intent Intent intent = new Intent(context,MyClass.class); // store id intent.putExtra("id", yourId);

並在此之後,使用此意圖爲創建的PendingIntent,要去建立了警鐘。當火警熄滅,方法onReceive(context, intent)將獲得用於創建的PendingIntent的意圖,因此,ID可以檢索的方法:

// retrieves id long id = intent.getLongExtra("id", -1);

我希望有用!