Android實現點選通知欄通知恢復前臺
阿新 • • 發佈:2019-02-20
通過廣播來實現,參考 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實現跳轉: