【Android】DeepLink跳转简介
一、DeepLink的概念
DeepLink是将用户直接带到应用中特定内容的网址。在Android中,可以通过添加intent filters 并从传入的intent中提取数据来设置DeepLink,从而将 用户引导向正确的Activity。
当单击的链接或编程请求调用Web URI的intent时,Android系统将按顺序尝试以下每个操作,直到请求成功为止:
1.打开用户首选的可以处理URI的App(如果已指定)。
2.打开唯一可以处理URI的可用App。
3.允许用户从对话框中选择App。
即:用户通过点击或者其他的操作发送url请求,系统会对该url进行解析,然后调起注册过相应scheme的应用,如果有多个注册,会弹出对话框让用户选择。
二、DeepLink的作用
实现了网页与App之间的跳转。每个App不再是一个个独立的孤岛。交互非常的方便,将App连接到了整个网络世界,用过浏览器就能随意的跳转。
2. 通过DeepLink方式App之间可以相互拉活,相互跳转。
三、使用
1.创建指向应用内容的链接,需要在应用的AndroidManifest.xml中配置包含如下元素和属性的intent filter
<action> 中指定ACTION_VIEW,以便可以从Google搜索访问意图过滤器
<data> 添加一个或多个<data> 标记,每个标记表示解析为活动的URI格式。<data>标签必须至少 包含该android:scheme 属性。
<category> 包括BROWSABLE 类别。为了从Web浏览器访问intent过滤器,需要它。没有它,单击浏览器中的链接无法解析为您的应用程序。
以下XML代码段显示了如何在清单中为深度链接指定intent过滤器。URI “example://gizmos”和“http://www.example.com/gizmos”两者都解析为此活动。
<activity
android:name=”com.example.android.GizmosActivity”
android:label=”@string/title_gizmos” >
<intent-filter android:label=”@string/filter_view_http_gizmos”>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<category android:name=”android.intent.category.BROWSABLE” />
<!– Accepts URIs that begin with “http://www.example.com/gizmos” –>
<data android:scheme=”http”
android:host=”www.example.com”
android:pathPrefix=”/gizmos” />
<!– note that the leading “/” is required for pathPrefix–>
</intent-filter>
<intent-filter android:label=”@string/filter_view_example_gizmos”>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<category android:name=”android.intent.category.BROWSABLE” />
<!– Accepts URIs that begin with “example://gizmos” –>
<data android:scheme=”example”
android:host=”gizmos” />
</intent-filter>
</activity>
注意:两个intent-filter仅元素不同。同一个intent-filter可以包括多个,创建intent-filter的目的是要申报的唯一URL(如特定的组合是非常重要的scheme和host),因此多个在同一个intent-filter实际上合并在一起考虑其组合属性的所有变体。例如,请考虑以下事项
<intent-filter>
…
<data android:scheme=”https” android:host=”www.example.com” />
<data android:scheme=”app” android:host=”open.my.app” />
</intent-filter>
2.从传入的intent中读取数据
一旦系统通过intent filter启动Activity,就可以使用它提供的数据Intent来确定您需要呈现的内容。调用getData()和 getAction()方法来检索与传入相关的数据和操作Intent。可以在活动的生命周期中随时调用这些方法,但通常应该在早期回调期间执行此操作,例如 onCreate()或 onStart()。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
}
参考网站:https://developer.android.google.cn/training/app-links/deep-linking