Android DeepLink的简单使用

Deeplink是什么?

Deeplink,简单讲,就是在你手机上点击一个链接后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。累似web,一个链接就可以直接打开web的网页,app的内页打开,可以使用deeplink来实现

基本使用

在清单文件配置

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<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="appblog"
            android:scheme="cn"
            />
    </intent-filter>
</activity>

主要代码BROWSABLE意思是可以被外部浏览器打开,host和scheme类似http://xxxx,在跳转的时候会用

<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="appblog"
        android:scheme="cn"
        />
</intent-filter>

写一个html链接过去<a href="cn://appblog/20">尝试打开deeplink界面</a>要与上面data里面的字段的对应起来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<a href="cn://appblog/joe">尝试打开deeplink界面</a>
注意:cn就是自己写的scheme,appblog是host可以自定义任意字符串,20是模拟传递的值

</body>
</html>

在MainActivity写一个webview用户加载刚写的网页

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView webView = findViewById(R.id.web_view);
        webView.loadUrl("file:///android_asset/" + "deeplink.html");
    }
}

在DeepLinkActivity获取传递的值

public class DeepLinkActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_deep_link);
        TextView tv = findViewById(R.id.tv);
        //获得网页传递过来的
        Intent intent = getIntent();
        if (intent != null) {
            Uri uri = intent.getData();
            String scheme = uri.getScheme(); //cn
            String host = uri.getHost(); //appblog
            if ("appblog".equals(host)) {
                // 跳转到对应详情页面
                Toast.makeText(this, "host:"+host+"scheme:"+scheme+"值:"+uri.getPathSegments(), Toast.LENGTH_SHORT).show();
                tv.setText("host:"+host+"\nscheme:"+scheme+"\n值:"+uri.getPathSegments());
            }
        }
    }
}

效果点击后就打开我们写的详情页了,我是写在一个app里的,当然只要是webview就可以打开对应的详情页,两个应用之间的跳转就完成了

封装方法用来Activity之间的跳转

/**
 * deepLink跳转
 **/
protected void deepLinkJump(String deepLinkUrl) {
    Uri uri = Uri.parse(deepLinkUrl);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}

点击事件中调用:

deepLinkJump("cn://chat_activity"); //记得在清单文件添加host和scheme哦!

配置清单如下:

<activity
    android:name=".view.ChatActivity"
    android:launchMode="singleTask"
    >
    <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="chat_activity"
            android:scheme="cn"
            />
    </intent-filter>
</activity>

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/30/simple-use-of-android-deeplink/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Android DeepLink的简单使用
Deeplink是什么? Deeplink,简单讲,就是在你手机上点击一个链接后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。累似web,一个链接就……
<<上一篇
下一篇>>
文章目录
关闭
目 录