![](/img/trans.png)
[英]Need to stop an app that was launched via Context.startActivity();
[英]Force external app launched via startActivity to go back to my app
我正在开发的应用程序将启动用户设备上可用的默认SMS应用程序。 为此,我调用startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:123456"))
。SMS应用程序正确打开,但当用户按下后退按钮时,我看到不一致的行为:
对于我作为用户,Android 6中的行为是意外的。 如果应用程序A启动应用程序B,则无论应用程序B是否实施“向上”操作,都应该返回应用程序A.
所以我想知道是否有一种方法可以在意图数据/标志中指定在启动的活动中推送的后退按钮将使用户返回“启动”活动。
我尝试使用startActivityForResult
无济于事。
此行为通常可通过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
应用程序,我会遇到两种不同的情况。
看一下后退按钮返回外部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主活动,而不是您的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.