我有一个应用程序,可以在服务的帮助下播放媒体。这可以在服务的帮助下顺利运行(创建持续通知)。按下后退键时,应用程序进入后台。问题是当我单击通知图标时,每次都会创建我的应用程序的新实例。如何在通知栏的帮助下将我的应用程序从后台传到前面?
我的通知如下:
private void notifyMe() {
final NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification note = new Notification(R.drawable.icon_audio, "Online!",
System.currentTimeMillis());
note.flags = Notification.FLAG_ONGOING_EVENT;
PendingIntent i = PendingIntent.getActivity(this, 0, new Intent(this, PlayMedia.class), 0);
note.setLatestEventInfo(this, "Media Payer", "Online",i);
mgr.notify(NOTIFY_ME_ID, note);
}
解决方案 我通过在清单文件中添加以下行来实现它:android:launchMode =“singleInstance” 意图标志没有任何影响,认为这很奇怪......
答案 0 :(得分:4)
传递给PendingIntent.getActivity的意图需要设置适当的标志以将正在运行的应用程序放在前面。所以:
Intent startActivity = new Intent(this,PlayMedia.class );
startActivity.setFlags(Intent.*appropriate flag*);
PendingIntent i = PendingIntent.getActivity(this, 0, startActivity, 0);
转到http://developer.android.com/reference/android/content/Intent.html并搜索(ctrl + f)“flag_”。在那里,您将找到可以使用的标志列表。
答案 1 :(得分:3)
只是答案的变体和对问题的评论。我不需要像Alpar建议的那样添加android:launchMode =“singleInstance”。这就是我让应用程序走到前台所做的。
// this code brings the application from background to foreground
// when the Notification icon is clicked on.
// create new notification
int icon = R.drawable.ic_notify;
Notification notification = new Notification(icon, "Ticker Text", System.currentTimeMillis());
// Create new Intent pointing to activity you want it to come back to
Intent notificationIntent = new Intent(this, MainApp.class);
// Add new intent to a pending intent
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
// add that pendingIntent to the new notification
notification.setLatestEventInfo(getApplicationContext(), "Title", "Text", contentIntent);
// send the intent to the NotificationManager
((NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE)).notify(UPLOADER_ID, notification);
答案 2 :(得分:2)
所有这些在Android 5中都不起作用。我尝试了以上所有建议,每当我点击通知时,我的应用程序都会被销毁并重新启动。
要修复它,我需要做的就是向Intent添加2个标志:
01001000
这会将您的应用程序恢复到正面,就像从启动器屏幕中点击一样。