我被困在一個愚蠢的問題上幾個小時。Android活動意向啓動
我的應用程序由2個活動組成:A(主)和B.還有一個服務S. 「正常」任務堆棧是AB和S在後臺運行。
我想直接用通知到達活動B,就會出現我的問題。我必須構建任務堆棧以獲取AB以保持返回按鈕的默認行爲。 (我希望用戶可以回到A)。
因爲我已經使用API 7,所以我無法使用android開發人員教程http://developer.android.com/guide/topics/ui/notifiers/notifications.html中顯示的intent數組。 因此,我決定在通知發送的意圖中添加自定義操作(S.ACTION_CUSTOM),以便在活動A的onCreate()中區分此情況。
與在服務S:
Intent notificationIntent = new Intent(this, A.class);
notificationIntent.setAction(ACTION_CUSTOM);
在一個
現在,在onCreate()方法的最後,我想補充:
if (S.ACTION_CUSTOM.equals(getIntent().getAction())) {
Intent intent = new Intent(this, B.class);
intent.setAction(S.ACTION_CUSTOM);
startActivity(intent);
}
此代碼的工作,直接從通知到B和授權總回報A. 但是一次我使用通知「shorcut」,然後在應用程序啓動時直接到達B,即使從主菜單中也是如此。 我已經嘗試了很多事情來理解發生了什麼,但即使我在A中的if語句的末尾添加getIntent()。setAction(ANYTHING),行爲也是一樣的。
有誰能告訴我發生了什麼事嗎?莫洛弗我開放的心態與其他方法來實現我的願望。
謝謝。
編輯:XML清單的
部分:
<activity
android:name=".A"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".B"
android:label="@string/app_name" >
</activity>
但我認爲意圖過濾無關與我的問題。
在活動B從通知中打開的情況下,*必須*後退按鈕打開活動A?這是不正常的android'流' - 迴應該回到以前的屏幕 – barry
@barry,你說得對我沒有正確表達我自己我不想要正常的Android流量,因爲在我的情況下,通知是一個正在進行的服務,如果返回按鈕顯示活動A,它將更加用戶友好。 – FabiF
發佈您的manifest.xml –