Android DeepLink的简单使用

deeplink是什么?

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

使用

在清单文件配置

代码.png

主要代码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="share"
                    android:scheme="cc" />
            </intent-filter>

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

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

<a href="cc://share/20">尝试打开deeplink界面</a>
注意:cc就是自己写的scheme,share是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(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();//cc
            String host = uri.getHost();//share
            if ("share".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("cc://chat_activity");//记得在清单文件添加host和scheme哦!

如下图


image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容