uni-app 安卓webview中H5(intent协议)无法拉起第三方应用 安卓原生webview测试可以
uni-app 安卓webview中H5(intent协议)无法拉起第三方应用 安卓原生webview测试可以
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win7 | HBuilderX |
操作步骤:
intent://deeplink?ansimclick=ansimclick&service=onlinepayappkr&cardCompanyCode=02&paymentCode=bM2tWGNWCd9%2BvALWHCRRsg%3D%3D&shopMallName=Qxj0gaTbp4GrcMA5S6KiAw%3D%3D&corpRegNo=wVHPBUmBPk8pNbdRvWZukA%3D%3D&settlementAmount=x8swajXXcIBeboFKVduSsQ%3D%3D&initialVector=MjQxNzVBQjcwNDE1MDIxOA%3D%3D/#Intent;scheme=samsungpay;package=com.samsung.android.spaylite;end
预期结果:
能拉起com.samsung.android.spaylite 应用
实际结果:
没有任何反应
bug描述:
uniapp打包安卓app,里面有webview 是第三方的H5。H5里面有支付无法拉起第三方应用。intent协议不行。原生安卓中的webview H5可以
更多关于uni-app 安卓webview中H5(intent协议)无法拉起第三方应用 安卓原生webview测试可以的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 安卓webview中H5(intent协议)无法拉起第三方应用 安卓原生webview测试可以的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 的 WebView 组件中,Android 平台默认拦截了 intent:// 协议,导致无法直接拉起第三方应用。这与原生 Android WebView 的行为不同,原生 WebView 默认支持 intent 协议。
解决方案:
-
拦截并处理 intent 协议
在 WebView 的[@shouldOverrideUrlLoading](/user/shouldOverrideUrlLoading)事件中捕获 intent 链接,通过plus.runtime.openURL()手动触发:<web-view [@shouldOverrideUrlLoading](/user/shouldOverrideUrlLoading)="handleUrlLoad" :src="h5Url"></web-view> methods: { handleUrlLoad(e) { if (e.url.startsWith('intent://')) { plus.runtime.openURL(e.url); // 调用系统能力处理 intent return true; // 阻止 WebView 默认跳转 } return false; } } -
配置 WebView 允许 intent 协议
在manifest.json的 Android 配置中声明支持 intent 的 scheme:"app-plus": { "plugins": { "WebView": { "schemes": ["intent"] } } }

