我正在开发的应用将启动用户设备上提供的默认短信应用。为此,我致电startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:123456"))
。 SMS应用程序正确打开,但当用户按下后退按钮时,我看到不一致的行为:
对于我作为用户,Android 6中的行为是意外的。如果应用程序A启动应用程序B,则无论应用程序B是否实施“向上”操作,都应该返回到应用程序A。
所以我想知道是否有一种方法可以在意图数据/标志中指定在已启动活动中推送的后退按钮将使用户返回“启动”活动。
我尝试使用startActivityForResult
无效。
答案 0 :(得分: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
应用,我会遇到两种不同的情况。< / p>
稍微了解后退按钮返回外部SMS应用程序主要活动的第一个场景,我在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
,它会startActivity
自己调用ConversationListActivity
,然后在同一任务中打开ConversationActivity
,所以后退按钮返回到SMS主要活动,而不是你的。