sta*_*ner 5 android deep-linking
我有一个应用程序,我需要在不同的启动类型上执行不同的任务。当我的应用程序在后台时,如何检测该应用程序已被深层链接启动。
假设您已经准备好了具有所需意图的活动,您要做的就是检查您的活动,if(getIntent().getAction() != null)这意味着它是通过深层链接启动的。用于导航的正常意图将返回null。
现在的问题是,如果您的活动已经在后台运行,并且您在 中编写了此代码onCreate(),并且深层链接的活动被设置为android:launchMode="singleTask"或启动,则FLAG_ACTIVITY_SINGLE_TOP它将不会再次触发。
为此,您必须重写onNewIntent(Intent intent)活动的方法,这样您就可以知道每次活动从意图启动时。同样,您可以在此处检查if(intent.getAction() != null)和intent.getData()检索数据。
需要注意的一件事是避免在onCreate和中运行相同的代码两次onNewIntent
如果您尚未在应用程序中实现深度链接,您首先需要使用<intent-filter>一个 Activity 来处理单击链接等时的意图。
<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>
Run Code Online (Sandbox Code Playgroud)
正如有人已经建议的那样,您可以在此处阅读官方文档的更多信息。
当单击的链接或编程请求调用 Web URI 意图时,Android 系统会按顺序尝试以下每个操作,直到请求成功:
打开可以处理 URI 的用户首选应用程序(如果已指定)。打开唯一可以处理 URI 的可用应用程序。允许用户从对话框中选择应用程序。
要创建指向应用内容的链接,请在清单中添加包含以下元素和属性值的意图过滤器:
https://developer.android.com/training/app-links/deep-linking
查看官方 Android 文档以了解有关深度链接的更多信息
| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |