簡體   English   中英

android掛起意圖通知問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM