Ton*_*780 4 android android-intent android-service android-notifications android-pendingintent
我有一个音乐流应用程序,我想在音乐流媒体时显示前景通知.我在单独的服务中进行流式传输,我用于前台通知的代码如下:
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);
Run Code Online (Sandbox Code Playgroud)
该符号显示在任务栏中,如果我点击该通知应用程序打开,但它是一个全新的活动(我猜是因为创建了一个新的Intent).因此,如果我在应用程序中打开了一个对话框,如果我关闭应用程序(单击主页)然后在通知栏中单击/单击应用程序图标,则该对话框无法打开.我该如何处理这个以便显示"旧/真实"活动?
tri*_*ggs 16
你需要使用标志.你可以在这里阅读标志:http://developer.android.com/reference/android/content/Intent.html
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)
从上面的链接:
如果设置,则如果活动已在历史堆栈的顶部运行,则不会启动该活动.
单个顶部标志将启动一个新的激活(如果尚未运行),如果有一个实例已经运行,则意图将被发送到onNewIntent().
小智 7
//在你的活动中
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);
Run Code Online (Sandbox Code Playgroud)
//在你的清单中
android:name="com.package.player.MusicPlayerActivity"
android:launchMode="singleTop"
Run Code Online (Sandbox Code Playgroud)