如何将现有活动从服务中带回到前端?

时间:2014-06-23 02:12:28

标签: c# android android-intent

我有一个正在运行的后台服务,我正在使用通知和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>

2 个答案:

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