2016-09-28 48 views
1

我正在開發的應用程序將啓動用戶設備上的默認SMS應用程序。爲此,我撥打startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:123456"))。短信應用程序正確打開,但我看到當用戶按下後退按鈕不一致的行爲:通過startActivity啓動的外部應用程序強制回到我的應用程序

  • 在運行Android 7仿真器,控制被帶回到我的應用程序,符合市場預期。
  • 在運行Android 6的模擬器上,後退按鈕執行「向上」操作,現在我處於SMS消息列表中。如果我再次推回,我會進入主屏幕,並且必須重新啓動我的應用程序。

對於我作爲用戶,Android 6中的行爲是意想不到的。如果應用程序A啓動應用程序B,則無論應用程序B是否實施「向上」操作,推回應總是回到應用程序A.

所以我想知道是否有一種方法來指定,在意向數據/標誌,後退按鈕推入已啓動的活動將帶回用戶的「起動」活動。我試過使用startActivityForResult無濟於事。

回答

0

此行爲通常可通過Intent標誌進行控制,例如,例如:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 

應該按預期行事。

看來在這種情況下,這不是系統/意圖行爲,它可能是特定於您正在使用的消息傳遞應用程序。

當在OnePlus one/Android M上進行測試時,如果我將Messaging應用用作默認的短信應用,或者使用Google Play的Google Messages應用,則會得到兩種不同的情況。

看起來有點進入第一場景後退按鈕返回到外部的短信應用的主要活動,我看到LogCat下面幾行:

ActivityManager: START u0 {act=android.intent.action.SENDTO dat=sms:xxx-xxx-xxxx flg=0x10808000 cmp=com.android.messaging/.ui.conversation.LaunchConversationActivity 
ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x1000c000 cmp=com.android.messaging/.ui.conversationlist.ConversationListActivity} 
ActivityManager: START u0 {flg=0x14000000 cmp=com.android.messaging/.ui.conversation.ConversationActivity 
ActivityManager: Displayed com.android.messaging/.ui.conversation.ConversationActivity 

這意味着,在上市活動SENDTO的操作是LaunchConversationActivity,它自己調用startActivityConversationListActivity,然後在相同的任務ConversationActivity中打開,所以後退按鈕返回到SMS主Activity,而不是您的。

相關問題