2016-09-28 49 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,而不是您的。

相关问题