繁体   English   中英

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

[英]How to bring application to front when the notification icon is clicked (from Service)?

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

我的通知如下所示:

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

您传递给 PendingIntent.getActivity 的意图需要设置适当的标志才能将正在运行的应用程序置于最前面。 所以:

Intent startActivity = new Intent(this,PlayMedia.class ); 
startActivity.setFlags(Intent.*appropriate flag*); 
PendingIntent i = PendingIntent.getActivity(this, 0, startActivity, 0);

Go to http://developer.android.com/reference/android/content/Intent.html and search (ctrl+f) for "flag_". 在那里,您将找到可以使用的标志列表。

只是答案的变体和对问题的评论。 我不需要像 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);

所有这些在 Android 5 中都不再起作用。我尝试了上述所有建议,但每当我单击通知时,我的应用程序就会不断被破坏并重新启动。

要修复它,我需要做的就是在 Intent 中添加 2 个标志:

Intent resultIntent = new Intent(context, MainActivity.class);
resultIntent.setAction(Intent.ACTION_MAIN);
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, 0);

这将使您的应用程序回到前面,就好像它是从启动器屏幕上点击的一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM