如何确认是通过DeepLink启动Android应用还是正常启动?

问题描述 投票:1回答:2

我有一个应用程序,需要在不同的启动类型上执行不同的任务。当我的应用程序处于后台时,如何检测该应用程序是否由deeplink启动。

android deep-linking
2个回答
0
投票

当单击的链接或编程请求调用Web URI意图时,Android系统将按顺序尝试以下每个操作,直到请求成功:

如果指定了用户首选的可处理URI的应用,请打开它。打开唯一可以处理URI的应用程序。允许用户从对话框中选择一个应用程序。

要创建指向您的应用程序内容的链接,请在清单中添加一个包含以下元素和属性值的意图过滤器:

https://developer.android.com/training/app-links/deep-linking

查看Android官方文档以了解有关深层链接的更多信息


0
投票

假设您已经准备好具有所需意图的活动,您要做的就是检查活动的if(getIntent().getAction() != null),这表示该活动是通过深层链接启动的。用于导航的普通意图将返回null

[现在的问题是,如果您的活动已经在后台运行,并且您在onCreate()中编写了此代码,并且深层链接的活动被设置为android:launchMode="singleTask"或使用FLAG_ACTIVITY_SINGLE_TOP启动,则它将不会再次触发。

为此,您将必须重写活动的onNewIntent(Intent intent)方法,这样,您每次从意图启动活动时就可以知道。同样,您可以在此处检查if(intent.getAction() != null)intent.getData()以检索数据。

要注意的一件事是避免在onCreateonNewIntent中两次运行相同的代码

如果您尚未在应用中实现深层链接,但首先需要使用<intent-filter>来使活动可用于在单击链接等时处理意图,例如,>]

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:host="www.example.com"
                android:pathPattern="/.*"
                android:scheme="https" />
        </intent-filter>

您可能已经有人建议,可以在官方文档here上了解更多信息。

希望这对您有所帮助。如上所述,目前正在我的应用程序中实现它。如果任何人有任何更正/建议,请这样做。

© www.soinside.com 2019 - 2024. All rights reserved.