我有一个音乐流应用程序,我想在音乐流式传输时显示前景通知。我正在单独的服务中进行流式传输,我用于前台通知的代码如下:
Notification notification = new Notification(R.drawable.ic_stat_notification, getString(R.string.app_name), System.currentTimeMillis());
Intent notificationIntent = new Intent(this, PlayerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this,getString(R.string.app_name),
getString(R.string.streaming), pendingIntent);
startForeground(4711, notification);
符号显示在任务栏中,如果我点击通知应用程序打开,但它是一个全新的活动(我猜是因为创建了一个新的Intent)。所以如果我有例如如果我关闭应用程序(单击主页),然后在通知栏中单击/单击应用程序图标,则应用程序中打开的对话框未打开。我如何处理这个以便显示“旧/真实”活动?
答案 0 :(得分:16)
你需要使用标志。你可以在这里阅读标志:http://developer.android.com/reference/android/content/Intent.html
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
从上面的链接:
如果设置,如果活动已经在历史堆栈的顶部运行,则不会启动该活动。
单个顶部标志将启动一个新的激活(如果尚未运行),如果有一个实例已经运行,则意图将被发送到onNewIntent()
。
答案 1 :(得分:3)
//在您的活动中
Notification notification = new Notification(R.drawable.ic_stat_notification, getString(R.string.app_name), System.currentTimeMillis());
Intent notificationIntent = new Intent(this, PlayerActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this,getString(R.string.app_name),
getString(R.string.streaming), pendingIntent);
startForeground(4711, notification);
//在你的清单中
android:name="com.package.player.MusicPlayerActivity"
android:launchMode="singleTop"
答案 2 :(得分:0)
在创建通知时,只需使用PendingIntent:
PendingIntent pendingIntent = PendingIntent.getActivity(getActivity(),
0, new Intent(getActivity(), WantedActivity.class), 0);
并且不要忘记在Notification Builder中设置它:
.setContentIntent(pendingIntent)