您的位置:首页 > 移动开发 > Android开发

Android实现点击通知栏通知恢复前台

2016-01-06 09:58 507 查看
通过广播来实现,参考 http://www.ithtw.com/5684.html( href="http://www.ithtw.com/author/leehom" target=_blank>leehom 2015年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实现跳转:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: