2014-06-23 59 views
0

我有一個後臺服務正在運行,我正在使用通知和PendingIntent來允許用戶「重新打開」現有的家庭活動。不幸的是,它正在創建一個新的家庭活動,堆積在我想要的一個頂部,意味着用戶必須點擊後退按鈕才能恢復到原始狀態。我需要在以下服務代碼中更改哪些內容才能確保它重新打開現有活動?如何從服務中將現有活動恢復到前臺?

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

如果您啓動的應用程序第一次從安裝程序,瀏覽器或IDE(IntelliJ,Eclipse,Android Studio等)ou實際上可能會看到這個長期存在的Android bug:http://stackoverflow.com/a/16447508/769265 –

+1

Post你的艙單請 –

+0

David,我在Android設備上獲得了同樣的效果。 – screenglow

回答

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