欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > android deep links即scheme uri跳转以及googlePlay跳转配置

android deep links即scheme uri跳转以及googlePlay跳转配置

2025/2/23 1:18:58 来源:https://blog.csdn.net/jzlhll123/article/details/140173131  浏览:    关键词:android deep links即scheme uri跳转以及googlePlay跳转配置

请添加图片描述

对于googlePlay的Custom URL就是googlePlay上APP网址:
https://play.google.com/store/apps/details?id=com.yourapp

如果是国内一些应用,则考虑market://包名等方式,自行百度。

对于Android URI Scheme

首先需要在Manifest xml中定义:

<activityandroid:name="com.your.SplashActivity"...><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><!-- 必须分开。 --><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:scheme="myapp" android:host="app"/></intent-filter></activity>

值得一提的是,作为启动应用,你必须分割开两个intent-filter,否则就会导致应用icon不见。而且BROWSABLE必须保证action和2个category。

测试方法
1. 写代码:
startActivity(Intent(Intent.ACTION_VIEW,Uri.parse("myapp://app")).also { it.flags = it.flags or Intent.FLAG_ACTIVITY_NEW_TASK })
2. adb命令:
adb shell am start -W -d "myapp://app"
3. webView支持:

html中添加:

<a href="myapp://app">跳转至MyApp</a>

对于真实的前端配置好以后,使用标准的浏览器去打开,是不会有问题的。
因为它肯定实现了类似下面的代码。

自定义WebView中,点击网页中链接进行跳转,出现err_unknown_url_scheme
解决办法,给WebViewClient添加如下代码:

public boolean shouldOverrideUrlLoading(WebView view, String url) {boolean schemeUri = true; //可以额外定制代码,进行判断return schemeUri && this.overrideUrlLoadUrl(view, url) ? true : super.shouldOverrideUrlLoading(view, url);
}public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {String uri = request.getUrl().toString();boolean schemeUri = true; //可以额外定制代码,进行判断return schemeUri && !uri.isEmpty() && this.overrideUrlLoadUrl(view, uri) ? true : super.shouldOverrideUrlLoading(view, request);
}private boolean overrideUrlLoadUrl(WebView view, @NonNull String url) {if (!url.contains("http://") && !url.contains("https://")) {startActivity(view, url);return true;} else {view.loadUrl(url);return false;}
}static void startActivity(WebView view, @NonNull String url) {startActivity(view, Uri.parse(url));
}static void startActivity(WebView view, @NonNull Uri uri) {Intent intent = new Intent("android.intent.action.VIEW", uri);try {view.getContext().startActivity(intent);} catch (Exception var6) {intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);try {view.getContext().startActivity(intent);} catch (Exception var5) {Exception e2 = var5;e2.printStackTrace();}}}

参考:
https://developer.android.com/training/app-links/deep-linking?hl=zh-cn

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词