【发布时间】:2021-08-29 21:31:44
【问题描述】:
我已经尝试过How to handle intent:// on a webView URL? 这个解决方案只是在我的 WebView 中打开一个 Google Play 商店网页,我想要的是点击,另一个应用程序应该打开,其意图是在 Chrome 中提供的。
我的应用有一个运行良好的 WebView。在某一阶段,WebView 请求访问以下内容(外部支付应用程序):
intent://pay/?pa=digitalshowroom1.payu@indus&pn=DOTPE%20PRIVATE%20LIMITED&tr=13261664955&tid=CX0FOrvSrHzDh7gP&am=1.00&cu=INR&tn=OrderId-CX0FOrvSrHzDh7gP
当我使用我的 WebView 在 Chrome 中使用的同一网站时,它会成功打开外部支付应用程序,即 Chrome 能够处理该意图,我的应用程序如何处理相同的意图。
我似乎知道我必须使用
public boolean shouldOverrideUrlLoading(WebView view, String url)
为此,我使用它如下:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && (url.startsWith("whatsapp://") || url.startsWith("tel") || url.startsWith("market"))) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
else {
return false;
}
现在,这段代码可以很好地处理以whatsapp 或tel 开头的意图,例如打开WhatsApp、调用应用程序等,因此我可以利用url.startsWith() 方法。
如何处理请求访问外部应用程序并以intent:// 开头的链接?
提前致谢!
【问题讨论】:
标签: android android-intent webview