activity android studio 跳转app_Android 协议跳转app

本文介绍了Android中如何实现协议跳转,包括设置scheme、处理6.0以上版本的自动验证,以及通过adb命令和代码进行测试。同时提到了Android Studio 3.0的App Links Assistant工具辅助配置。
摘要由CSDN通过智能技术生成

协议跳转

当我们在应用中点击一个协议链接,通常会提示我们选择合适的浏览器或者app去打开它。

如上,定义后 , 安卓上打开web链接: http://www.stone86.top/magic 可以匹配到 该 MainActivity

scheme可以随意设置。访问形式还是跟上面类似的: scheme://host/pathPatteren

只是在6.0以后多了一个默认处理。

使app作为给定链接的默认处理者

要想实现Android 6.0 中的”让app作为对给定类型链接的默认处理者”。要再增加如下配置:

android:autoVerify="true" 自动会访问该站点进行验证。为了自动验证,向阿里云申请了一天的https+cdn来测试,实际访问的是:https://www.stone86.top/.well-known/assetlinks.json。 该验证服务必须是https的站点;实际测试时,明明站点的json是可以访问的,但验证还是没通过,猜想,可能是国内服务器的问题

文件夹名必须是.well-known,文件名为assetlinks.json,内容是:

[{

"relation": ["delegate_permission/common.handle_all_urls"],

"target": { "namespace": "android_app", "package_name": "com.stone.mvp", "sha256_cert_fingerprints": ["81:6D:ED:45:12:AE:0D:89:04:CC:5F:DB:E6:BB:62:31:64:4A:14:4D:54:9B:CA:48:95:33:C6:AF:F3:3D:4A:6F"]}}]

可以使用java的keytool命令来获取fingerprints:$ keytool -list -v -keystore my-release-key.keystore。

当app运行,验证通过后;再打开该链接,就会查找到系统中,已配置了其对应的app,就不会弹出其它可接受网页category的应用选择框了;会直接打开app。

使用命令验证绑定情况

adb shell am start -a android.intent.action.VIEW \

-c android.intent.category.BROWSABLE \

-d "http://www.stone86.top/magic" "com.stone.mvp"

当不含后面的package值时,还是会弹出多app选择框。因为验证可能失败了。

测试网站与url的绑定命令:

adb shell dumpsys package domain-preferred-apps

输出:

Package: com.google.android.calendar

Domains: www.google.com calendar.google.com

Status: undefined //未明确定义

Package: com.stone.mvp

Domains: stone86.top www.stone86.top

Status: ask //询问

Package: com.google.android.youtube

Domains: youtu.be m.youtube.com youtube.com www.youtube.com

Status: always : 200000001 //有always,表示是 成功

代码中应用

用intent,匹配协议,打开App:

String url = "http://stone86.top/magic?key=stone"; //这里加了 ?key参数

Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

in.setPackage("com.stone.mvp"); //没有这句可能会有选择框,看验证的绑定情况;反之,有就能直接打开

startActivity(in);

activity中,解析:

val queryParameter = intent?.data?.getQueryParameter("key")

if (queryParameter != null) { println("stone.stone queryParameter=" + queryParameter) }

webview跳转App:

String url = "http://stone86.top/magic?key=stone";

WebView view = new WebView(this);

view.loadUrl(url); //可能会有选择框,看验证的绑定情况

Android Studio 3.0中操作App Links

AS3.0 , 菜单栏 Tools > App Links Assistant 可以快速操作 App Links

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值