我有一个正在运行的后台服务,我正在使用通知和PendingIntent来允许用户重新打开"现有的家庭活动。不幸的是,它正在发生的事情是,它创建了一个新的家庭活动,堆叠在我想要去的那个上面,这意味着用户必须按下后退按钮才能回到原来的状态。我需要更改以下服务代码以确保它只是重新打开现有的Activity?
Intent notificationIntent = new Intent(ApplicationContext, typeof( MainActivity ) );
notificationIntent.SetFlags (ActivityFlags.NewTask);
PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, 0 );
Notification notification = new Notification (Resource.Drawable.Icon, "Playing: " + mStreamName );
notification.Flags |= NotificationFlags.OngoingEvent;
notification.SetLatestEventInfo (this, "MyApp", "Announcement!", pendingIntent);
StartForeground((int)NotificationFlags.ForegroundService, notification);
我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="..." android:versionCode="2" android:versionName="2.0">
<uses-sdk />
<application android:label="..." android:icon="@drawable/icon">
<service android:enabled="true" android:name=".AudioService"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
</manifest>
答案 0 :(得分:0)
你可以给你的活动一个“单顶”标志,并在你的OnNewIntent中处理重新启动的东西。 您可以参考http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)
答案 1 :(得分:0)
虽然我无法解释为什么这是有效的,但我找到了答案。如果有人愿意详细说明这些变化,我会很感激地理解它。
手动将以下行添加到我的清单文件中解决了问题:
<activity android:name="MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
这里的答案从未被接受过:
How to bring Android existing activity to front via notification