我在我的应用中实现了深层链接 . 我在清单文件中添加了此intent过滤器,并且深层链接正在运行 .
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.VIEW" />
<data
android:host="www.mywebsite.com"
android:pathPrefix="/something"
android:scheme="http" />
</intent-filter>
问题是通过深度链接,我的应用程序将在当前应用程序之上启动 . 如果我在Gmail中并点击了一个链接,那么我的应用就会在Gmail上启动 . 我想以不同方式启动我的应用程序 .
如果我的应用已经在后台运行,我点击Gmail中的一个重定向到我的应用的链接,我将同时运行两个应用实例;一个在后台,另一个在Gmail之上 . 我想一次只运行我的应用程序的一个实例,因此它不在当前应用程序(Gmail)之上 . 我怎样才能做到这一点?
6 回答
接受的答案对我不起作用,这是做了什么:
来自官方文件:
你需要为你的Manifest中的Activity做一些事情 .
这告诉系统始终启动Activity的现有实例(如果已创建) .
然后你可以通过覆盖方法来处理Intent
有关更多信息,请参阅http://developer.android.com/guide/topics/manifest/activity-element.html .
我有这个完全相同的问题,除了我希望用户使用完整的后台堆栈返回主任务,好像他们刚刚使用应用程序切换器移动到我的应用程序 . 要做到这一点,我不得不重新安排任务 .
1)授予我的应用程序重新排序任务的权限
2)跟踪主要任务ID是什么
3)当我的深层链接活动启动时,它会保存一些数据供以后使用,然后将主要任务带到前面
4)当主任务的后端堆栈顶部的任何活动开始时,它会检查是否有任何已保存的数据要处理,并对其进行处理 .
我们在深层链接方面遇到了几个问题 . 喜欢:
只点击两次相同的链接,首先点击触发正确的视图
打开了多个实例
whatsapp或facebook中的链接因为他们的网络浏览器而在whatsapp本身打开了一个视图 .
_69_在android 6上只打开了一个实例,但只处理第一个意图,第二个和第三个打开应用但没有动作,因为intentdata没有以某种方式改变 .
因此,对于我们所遇到的几个问题,以下问题不是一个明确的答案 .
Our solution:
a)创建了一个新的FragmentActivity
b)清单:
c)通过调用以下示例函数来处理活动onCreate()和onResume()中传递的新意图:
只为一个实例解决此问题
我通过在清单文件中添加android:launchMode =“singleTask”来解决这些问题