单击通知图标时如何将应用程序带到前面(来自服务)?

时间:2011-07-04 10:08:27

标签: android

我有一个应用程序,可以在服务的帮助下播放媒体。这可以在服务的帮助下顺利运行(创建持续通知)。按下后退键时,应用程序进入后台。问题是当我单击通知图标时,每次都会创建我的应用程序的新实例。如何在通知栏的帮助下将我的应用程序从后台传到前面?

我的通知如下:

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” 意图标志没有任何影响,认为这很奇怪......

3 个答案:

答案 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

这会将您的应用程序恢复到正面,就像从启动器屏幕中点击一样。