[英]android pending intent notification problem
我的應用程序中有一個警報事件,它會啟動一個通知,然后在按下時啟動一個活動。 問題是,當我創建多個警報時,從通知啟動的活動將獲得與第一個相同的附加功能。 我認為問題要么出在我放入待處理意圖中的意圖,要么出在待處理意圖本身中。 我想我可能需要在其中一個上放一面旗幟,但我不知道是哪一個。
Intent showIntent =new Intent(context, notificationreceiver.class);
showIntent.putExtra("details", alarmname);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
showIntent, 0);
notification.setLatestEventInfo(context, "The event is imminent",
alarmname, contentIntent);
和通知的接收者
Bundle b = getIntent().getExtras();
String eventname = b.getString("details");
details.setText(eventname);
每次發生通知時,“詳細信息”額外內容都相同,而不是具有不同的值。 在我設置意圖之前,我確信正確的值會出現在“詳細信息”中,因此每次按下任何通知時都會出現第一個意圖的問題。 我怎樣才能讓它啟動正確的意圖? 希望我盡可能清楚謝謝!
我解決這個問題的方法是在獲得 PendingIntent 時分配一個唯一的requestCode :
PendingIntent.getActivity(context, requestCode, showIntent, 0);
通過這樣做,您正在向系統注冊不同/獨特的意圖實例。 提示:使 requestCode 唯一的一個好方法是將當前系統時間傳遞給它。
int requestID = (int) System.currentTimeMillis();
問題是,當我創建多個警報時,從通知啟動的活動將獲得與第一個相同的附加功能。
正確的。
我怎樣才能讓它啟動正確的意圖?
這取決於您是否有兩個將同時注冊的警報。
如果沒有,您可以使用FLAG_ONE_SHOT
或其他PendingIntent
標志之一讓您的第二個PendingIntent
使用較新的附加功能。
但是,如果您將同時注冊兩個警報,並且具有不同的Intent
附加項,則需要使這兩個Intents
具有更大的實質性不同,以便在比較兩者時filterEquals()
返回false
。 例如,您可以調用setData()
或setAction()
並為每個Intent
提供不同的值。
我在我的應用程序中遇到了這個問題,只是生成了一個隨機數來覆蓋通知意圖:
int random= new Random().nextInt();
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
random,
PendingIntent.FLAG_UPDATE_CURRENT
);
我遵循了 U-ramos 提供的解決方案,這對我有用
int requestID = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getActivity(this, requestID, showIntent, 0);
另一種解決方案:
像這樣使用PendingIntent.FLAG_UPDATE_CURRENT :
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,i, PendingIntent.FLAG_UPDATE_CURRENT);
這對我有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.