Android-DeepLink深度链接

DeepLink使用

Posted by 松下百合子 on September 18, 2019

DeepLink当做笔记记之。

文章转载自菜鸟教程

源码:https://github.com/xiabing0802/DeepLink-1

  • DeepLink 从字面意思可以理解为「深度链接」,那么 DeepLink 在 Android 开发中有什么作用呢?简单来说,可以用这种技术实现 web 页面点击一个链接跳转至 APP 指定的某一页面。这种技术的好处是可以为我们的 APP 导流。

使用

  • 在AndroidManifest.xml中设置
1
<uses-permission android:name="android.permission.INTERNET"/>
  • 添加intent-filter
1
2
3
4
5
6
7
8
9
10
11
<activity android:name=".DeepLinkActivity">
            <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="share"
                    android:scheme="go" />
            </intent-filter>
</activity>
  • 在html文件中
1
2
3
4
<div>
    <a id="J-call-app" href="javascript:;" class="label">立即打开&gt;&gt;</a>
    <input id="J-download-app" type="hidden" name="storeurl" value="http://m.chanyouji.cn/apk/chanyouji-2.2.0.apk">
</div>
  • 用 go://share/main?name=tomcat&age=100 在手机浏览器中打开

  • android activity中打开页面解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void getDataFromBrowser() {
        Uri data = getIntent().getData();
        try {
            scheme = data.getScheme(); // "will"
            host = data.getHost(); // "share"
            params = data.getPathSegments();
            String testId = params.get(0); // "uuid"

            String path =data.getPath();
            String name =data.getQueryParameter("name");
            String age =data.getQueryParameter("age");

            tv_data.setText("Scheme: " + scheme + "\n" + "host: " + host + "\n" + "params: " + testId + "\n" + "path: " + path+
                    "\n" + "name: " + name +"\n" + "age: " + age );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }