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全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论