1. 程式人生 > >android 使用Notification彈多個通知時,點選跳轉intent取值時總是最後一個

android 使用Notification彈多個通知時,點選跳轉intent取值時總是最後一個

最近開發中模組功能,使用NotificationManager觸發多個Notification:

private void showIMNotification(Context context, String ticker,
			Bitmap defaultBitmap, UnreadEntity unreadEntity, int notificationId) {
		Intent intent = new Intent(CHATATION_FLAG);
		intent.putExtra("chat_session_key", unreadEntity.getSessionKey());
		NotificationManager manager = (NotificationManager) context
				.getSystemService(Context.NOTIFICATION_SERVICE);
		PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
				intent, PendingIntent.FLAG_UPDATE_CURRENT);
		Notification notify1 = new Notification();
		notify1.icon = R.drawable.logo;
		notify1.when = System.currentTimeMillis();
		String appName = "";
		try {
			ApplicationInfo appInfo = context.getPackageManager()
					.getApplicationInfo(
							PhoneTools.getPackageInfo(context).packageName,
							PackageManager.GET_META_DATA);
			appName = appInfo.metaData.getString("MY_APP_LABEL");
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			appName = context.getString(R.string.app_name);
		}
		notify1.tickerText = ticker;
		notify1.setLatestEventInfo(context, appName, ticker, pendingIntent);
		notify1.number = 1;
		notify1.flags |= Notification.FLAG_AUTO_CANCEL; 
		manager.notify(notificationId, notify1);
	}
每次呼叫都是新的intent,但是跳轉到對應的activity取值時,發現每次都是取最後一個notification intent裡的值,然後網上查資料以後發現:問題主要出在PendingIntent.getActivity()的第二個引數,平常demo直接寫0的,應用場景不同所以沒出問題,實際上是通過該引數來區別不同的intent的,如果id相同,就會覆蓋掉之前的intent了。所以總是獲取到最後一個intent。

最後修改為:

PendingIntent pendingIntent = PendingIntent.getActivity(context, StringUtil.getIntUUID(),
				intent, PendingIntent.FLAG_UPDATE_CURRENT);

相關推薦

android 使用Notification通知intent總是最後一個

最近開發中模組功能,使用NotificationManager觸發多個Notification: private void showIMNotification(Context context, String ticker, Bitmap defaultBitmap

懸浮球(機型懸浮窗許可權設定狀態列適配可自動或手動設定大小WebView拖拽處理)

懸浮球:多機型懸浮窗許可權設定,狀態列適配,可自動或手動設定大小,點選跳轉WebView,拖拽處理, 應用內和應用外都可以顯示(可設定取消)可做SDK 和依賴類,橫豎屏切換處理 專案地址: GitHub:https://github.com/gitUserBoy/flow_balls.

React-Native上拉重新整理下拉載入詳情程式碼解析

React-Native 上拉重新整理下拉載入,點選跳轉詳情程式碼解析 配置路由器 import { createTabNavigator, createStackNavigator } from "react-navigation"; import New1

廣告banner:手動滑動切換自動切換非同步載入網路圖片

效果圖: 該banner功能有自動切換圖片,點選圖片可以自定義事件,手動滑動切換,非同步載入圖片 程式碼說話: 佈局檔案: <!-- 廣告位 --> <FrameLayout android:

android實現檢測app是否有通知許可權沒有就去設定設定成功返回並測試發出一條通知訊息

1.判斷是否有通知許可權 2.沒有的話,彈出一個對話方塊,提示使用者是否去設定,使用者點選確定後跳轉到設定頁面 3.手動設定許可權成功後,結果會返回到 onActivityResult方法中,其中返回的請求碼等於傳入的碼時,並且結果碼等於2,編輯正確設定了,此時就可以呼

Vue實現商城裏面商品計算刪除

als ons enter box urn num src display ack <!--包含 全選/不全選 批量刪除 全部金額計算 數量加減--> 簡陋的CSS代碼 .main{ width: 100%;}.title{ wid

佈局中同時使用Toolbar和EditText鍵盤標題欄被拉伸

在Toolbar中新增 android:fitsSystemWindows="true" 這時,如果我們的layout中包含可滾動的控制元件如ListView、ScrollView(即在鍵盤彈出時會

微信小程式中相同的元件當前樣式的改變

第一次用CSDN寫部落格,以前的是新浪部落格,地址為:http://blog.sina.com.cn/99yt99 以後一直就用CSDN,新浪上面就不更新了。1、需要的東西  一張透明背景的圖片:proper.png     2、效果展示  預設選中與樣式改變的為“距離優先”

Notification指定介面(APP被殺死或雙擊退出喚醒然後

現有如下需求: 後臺做一個推送,APP收到後以notification的形式展示,使用者點選,跳轉到指定介面。 需求簡單,但是有些細節,確是要在寫的時候,通過大量測試才能知道。 1、如果使用者雙擊退出了,這個時候,APP並沒有被系統殺死,點選手機上的選單鍵

modal次被觸發頁面的任何地方都出現

之前剛開始正式使用mui的時候,要求寫一個頁面,如下圖所示: 就是在點選”登入問題點這裡“的時候,顯示彈層,點選彈層上的按鈕,彈層消失。 彈層的這個,我是根據demo裡的modals.html來寫的,遇到的第一個問題是,彈層會擋住下面的輸入框,就是說,即使使用者·沒有點選

Android中webview無法出檔案選擇框按鈕沒反應的問題

以前寫的專案時,遇到過這樣一個問題,在ios和微信都可以,就是android不行,尷尬的,無論你多使勁點都發現無法彈出安卓原生檔案選擇介面,簡直要崩潰了最後通過一番資料查詢,發現要重寫WebChrome

Android--listview中每個item有控制元件的方法

有時候listview中item是由多個控制元件組成的,如果要分別獲取每個元件的點選事件,需要在adapter中getview方法中位每個控制元件設定tag,tag值為position,然後在onclick方法中判斷t

需要開啟app通知從app到相應應用資訊處

Intent mIntent = new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (Build.VERSION.SDK_INT >= 9) { mIntent.setAction

Android 如何保證App切換到後臺或頁面重新開啟APP、或返回之前頁面維持其狀態不變

專案中遇到的一些小問題,記錄、分享一下。 Android 如何保證App切換到後臺,或頁面跳轉後,重新開啟APP、或返回之前頁面時,維持其頁面狀態不變? 1、問:當APP啟動後,開啟某一介面,然後點選手機HOME鍵,使應用程式退到後臺;當再次開啟App時,如何保證

(待做例子)問題描述: el-tab 下有2路由其中第1路由設置了 beforeRouteLeave,點擊 el-tab 第2tab時,樣式直接跟過去了(預期結果是:樣式不到第二tab上beforeRouteLeave允許跳轉後才到第二tab上)

last filter cond 結果 tick 允許 代碼 his 過去 解決: 經過以上分析,強制賦值應該在前次賦值而且DOM已經刷新完畢之後進行。可以使用$nextTick,以下是代碼: handleTabClick (tab) {

Android使用系統DownloadManager下載更新軟體並自動到安裝頁面

介紹:https://www.jianshu.com/p/7ad92b3d9069 1.下載apk /* * 下載apk * @param context * @param title 通知的標題 * @param url 下載的地址 * @param id 返回一個加入下載佇列的i

小程式外部連結計算問題後臺解密獲取更使用者資訊

使用場景: 小程式上體點選圖跳轉廣告(百度這種連結) 直接上程式碼: index.wxml <!--pages/index/index.wxml--> <view wx:for="{{nav}}" wx:key="{{item}}"> <i

Android WebView 圖片超出寬度自適應檢視大圖

webView 配置  WebSettings webSettings = webView.getSettings(); webSettings.setJava

Unity3D:輸出按下到的UI

PointerEventData eventData = new PointerEventData(EventSystem.current); eventData.pressPosition = pos; eventData.position = pos; List<RaycastResul

NSTextField 處於編輯狀態return鍵 結束編輯NSButton的return快捷方法不響應

NSButton 設定快捷鍵 return, 當 NSTextField 處於編輯狀態時, 點選return鍵 結束編輯,要求不響應button的return快捷方法 attributes inspector 面板中設定 NSTextField 的 Action 屬性 為 Send On Ent