可由第三方应用唤醒,也可以由网页唤醒,也可以通过adb命令直接测试唤醒。
1.网页唤起用例:
<!DOCTYPE html>
<head>
<meta charset="UTF-8" />
<meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
</head>
<html>
<input type="button" value="点击我打开Deeplink" onclick="javascrtpt:window.location.href='test://xiaoshuo.com/detail?id=28493'">
</html>
直接保存为html文件,存入手机中,然后选择用浏览器打开,点击“点击我打开Deeplink”按钮后,会显示下面的弹框,点击确认,即可唤醒相关应用。
2.adb命令唤起
adb shell am start -a android.intent.action.VIEW -d "test://xiaoshuo.com/detail?id=28493"
3.应用唤起
4.被唤醒应用设置
4.1AndroidManifest设置
<activity android:name="com.xiaoshuo.activity.DetailActivity" android:theme="@style/TranslucentTheme" >
<intent-filter>
<data
android:scheme="test"
android:host="xiaoshuo.com"
android:pathPrefix="/detail"
/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
4.2 Activity接收参数
// 判断是否外部唤起
Uri data = getIntent().getData();
if (data != null) {
String host = data.getHost();
String path = data.getPath();
String id = data.getQueryParameter("id");
String scheme = data.getScheme();
Logger.i(TAG, "host: " + host);// xiaoshuo.com
Logger.i(TAG, "path: " + path);// detail
Logger.i(TAG, "scheme: " + scheme);// test
Logger.i(TAG, "id: " + id);// 10086
}
这个时候就可以测试DeepLink唤醒了。
至于是否直接进入到对应的Activity,还是需要判断被唤醒Activity之前的界面是否存在,然后再一级一级的进行跳转,就需要具体问题具体分析了。不过我们的应用没有考虑那么复杂,只需要唤醒进入对应的详情界面即可,按返回键时,会判断上一个Activity的界面是否存在,不存在则重新打开即可。