1. 程式人生 > >Android實現點選通知欄通知恢復前臺

Android實現點選通知欄通知恢復前臺

通過廣播來實現,參考 http://www.ithtw.com/5684.html(leehom2015年09月15日 於 IT十萬為什麼 發表



我的實現方法是不通過廣播,而是通過PendingIntent實現跳轉:

Intent intent = new Intent();
PendingIntent pendingIntent = null;
if(BridgeUtil.isBackground(context)) {
        // APP在後臺執行
        Intent[] intents = new Intent[2];
        Intent mainIntent = new Intent(MainActionContants.ACTION_MAIN_MAIN_A1.val(), null);
         mainIntent.addCategory(Intent.CATEGORY_DEFAULT);
         List<ResolveInfo> apps = context.getPackageManager().queryIntentActivities(mainIntent, 0);
         if(null != apps && apps.size() > 0) {
                intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, apps.get(0).activityInfo.name));
                intents[1] = new Intent(MessageActionContants.ACTION_MESSAGE_LIST_A1.val());
}
        pendingIntent = PendingIntent.getActivities(context, 0, intents, PendingIntent.FLAG_UPDATE_CURRENT);
} else {
        // APP程序執行在最上層,跳轉訊息列表
        intent = new Intent(MessageActionContants.ACTION_MESSAGE_LIST_A1.val());
        pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
Notification notification;
// SDK版本大於16時才能使用Builder方法
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
        NotificationCompat.Builder builder = new Builder(context);
        notification = builder
                    .setContentTitle(context.getText(R.string.app_name))            // 訊息標題
                    .setContentText(Handler_String.isEmpty(summary) ? "" : summary)         // 訊息內容
                    .setContentIntent(pendingIntent)                                        // 訊息意圖
                    .setSmallIcon(R.drawable.app_logo)                              // 訊息圖示(app圖示)
                    .setTicker(context.getText(R.string.app_name) + "    " 
                            + (Handler_String.isEmpty(summary) ? "" : summary))             // 頭部顯示的內容(app名+內容)
                    .setWhen(System.currentTimeMillis())
                    .setDefaults(Notification.DEFAULT_ALL)                                  // 聲音、閃光、震動
                    .setLights(Color.GREEN, 500, 1000)
                    .setAutoCancel(true)
                    .build();
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
} else {
        String content = context.getText(R.string.app_name) + "    " + (Handler_String.isEmpty(summary) ? "" : summary);
         notification = new Notification();
         notification.icon = R.drawable.app_logo;              // 訊息圖示(app圖示)
          notification.defaults = Notification.DEFAULT_LIGHTS;
          notification.defaults |= Notification.DEFAULT_SOUND;
          notification.defaults |= Notification.DEFAULT_VIBRATE;
           notification.flags |= Notification.FLAG_AUTO_CANCEL;
           notification.when = System.currentTimeMillis();
           notification.tickerText = content;                            // 頭部顯示的內容(app名+內容)
           notification.setLatestEventInfo(context, context.getText(R.string.app_name), content, pendingIntent);
}
if(null != notificationManager) {
        notificationManager.notify(R.drawable.app_logo, notification);
}


我的實現方法是不通過廣播,而是通過PendingIntent實現跳轉: