Android 自定义操作意图在与我从中单击的应用相同的上下文中打开我的应用
我在这方面搜索了很多 但是,我的代码可以使用自定义的意图URL打开我的应用程序。此URL通常通过电子邮件发送 当我点击链接时,它会很好地打开我的应用程序,一切似乎都正常工作;但是,它会在电子邮件应用程序的上下文中打开 例如,如果我点击Gmail的链接,当我打开多任务处理时,我必须点击Gmail返回到刚刚打开的应用程序 我想它应该打开我的应用程序,我可以在其他应用程序运行时继续使用GmailAndroid 自定义操作意图在与我从中单击的应用相同的上下文中打开我的应用,android,android-intent,Android,Android Intent,我在这方面搜索了很多 但是,我的代码可以使用自定义的意图URL打开我的应用程序。此URL通常通过电子邮件发送 当我点击链接时,它会很好地打开我的应用程序,一切似乎都正常工作;但是,它会在电子邮件应用程序的上下文中打开 例如,如果我点击Gmail的链接,当我打开多任务处理时,我必须点击Gmail返回到刚刚打开的应用程序 我想它应该打开我的应用程序,我可以在其他应用程序运行时继续使用Gmail 有什么想法吗 将Intent.FLAG\u ACTIVITY\u NEW\u TASK和Intent.FL
有什么想法吗 将
Intent.FLAG\u ACTIVITY\u NEW\u TASK
和Intent.FLAG\u ACTIVITY\u CLEAR\u TOP
标志(Intent.SetFlags()
添加到您的Intent中。您的ACTIVITY将在新任务中打开,此活动将成为新堆栈的根。这是android的默认行为,但要覆盖它,您需要通过
意图。标记活动和新任务
意图。标记活动\u清除\u顶部
符合您的意图。使您的URL如下所示:
intent:#intent;launchFlags=0x10000000;component=com.mycompany.myapp/com.mycompany.myapp.MyActivity;end
此URL包含Intent.FLAG\u ACTIVIY\u NEW\u TASK
的launchFlag,因此这将在单独的任务中启动您的应用程序(在电子邮件客户端或浏览器或任何其他任务之外)
编辑:根据OP的评论添加其他详细信息 您说您正在使用如下URL: 在这种情况下,您必须使用意图过滤器,通过在清单中的某个
上指定
,让Android打开您的应用程序。要解决启动的活动与启动它的活动在同一任务中结束的问题,您可以做以下几件事:
1) 如果活动始终是任务的根(开始,第一个)活动,则可以在调用super.onCreate()
后,将以下代码放入onCreate()
:
2) 您可以在清单中将此活动的启动模式设置为singleTask
,方法是添加
android:launchMode="singleTask"
到
定义。这将导致活动在其自己的任务中启动,但此启动模式具有其他更微妙的后果,因此您需要小心使用它。总的来说,我不喜欢建议这样做,因为这样做往往会产生比解决问题更多的问题
3) 您可以通过检查用于在
onCreate()
中启动应用程序的Intent
(通过浏览器或电子邮件客户端启动时,Intent将数据设置为URL)来确定应用程序是从浏览器还是从电子邮件客户端启动的。然后,您可以使用我在上面选项1中提供的代码来决定是否要在自己的任务中重新启动它。这是Android的默认行为。FD:我不知道您正在使用的witch Android版本,但在Jelly bean和Kitkat中,我遇到了与Frenzy相同的问题:共享按钮默认情况下启动当前应用程序中的活动。Thx顺便提一下,对于这个问题,我很难找到答案,直到提交到这里。OP是使用URL来做这件事的,他不是从代码中调用startActivity()
。OP是使用URL来做这件事的,他不是从代码中调用startActivity()。嘿,大卫,我有点困惑:这就是我的url是如何构造的,在你的示例中,当传递“ID”时打开我的应用程序,它会是什么样子?
android:launchMode="singleTask"