1. 程式人生 > >Android Notification 通知欄點選不能跳轉

Android Notification 通知欄點選不能跳轉

關於通知欄Notification的使用,不多講,這裡說的很清楚http://www.cnblogs.com/zenfly/archive/2012/02/09/2343923.html

先說下我遇到的問題:

在應用關閉的時候,傳送通知到通知欄,點選通知欄能正常跳轉到我想要的頁面,程式碼如下

Intent msgIntent = new Intent();
msgIntent.addCategory(Intent.CATEGORY_LAUNCHER);
msgIntent.setComponent(new ComponentName(context.getPackageName(), "com.test.FragmentActivity"));
msgIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 關鍵的一步,設定啟動模式
UITools.showNotification(context, Notify.NORMAL, msgIntent, jsonBean.getMessageTitle());

在應用開啟的情況下,傳送通知,程式碼如下:

Intent msgIntent = new Intent();
msgIntent.setClass(context, FragmentActivity.class);
msgIntent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 關鍵的一步,設定啟動模式
UITools.showNotification(context, Notify.NORMAL, msgIntent, jsonBean.getMessageTitle());

以上這段程式碼,出現了不能跳轉的情況,於是,做了如下操作解決上述問題

<activity
       android:name=".activity.FragmentActivity"
       android:taskAffinity="" >
</activity>

設定棧,可以正常響應我的通知欄意圖了,但是新的問題出現了,當我按下Home鍵回到桌面的時候,在回來,就不能開啟按下之間的頁面了,不同的棧,,,,,

-------問題總是有的,於是換了一種折中的解決方案

Intent msgIntent = new Intent();
msgIntent.setAction(IntentAction.ACTION_TRIP_APPROVE);
UITools.showNotificationBroadcast(context, Notify.NORMAL, msgIntent, jsonBean.getMessageTitle());  //這裡是傳送廣播哦

設定通知欄的意圖為傳送廣播

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, count, intent, PendingIntent.FLAG_UPDATE_CURRENT);

當然,這帶來了新的問題,如果我的通知欄需要傳遞引數怎麼辦,可以通過如下方式傳遞

intent.setData(Uri.parse("abc"));

這種可以傳遞結構化的資料,那我們所謂的bundle就不能使用了麼,當然不是,如下

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent,PendingIntent.FLAG_UPDATE_CURRENT);

粗體黑字的地方是重點,為每個意圖設定不同的requestCode,Flag設定為更新當前