android的webview不能加载alipays:// 的scheme,提示net::ERRUNKNOWN_URL SCHEME?

按照网上说的重写shouldOverrideUrlLoading也试了,还是会在onReceivedError的回调里提示errorCode为-10


回答:

在安卓的WebView中加载自定义URL scheme(如alipays://)时,可能会出现 net::ERR_UNKNOWN_URL_SCHEME 错误。这是因为WebView默认不支持自定义URL scheme。要解决这个问题,需要重写 WebViewClient 的 shouldOverrideUrlLoading 方法,并在其中处理自定义的URL scheme。

前提实现 shouldOverrideUrlLoading 方法的情况下。以下是一个我写的示例你可以参考一下:

webView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url.startsWith("alipays://")) {

// 处理自定义URL scheme

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

try {

startActivity(intent);

} catch (ActivityNotFoundException e) {

// 没有找到可以处理该URL的应用

e.printStackTrace();

}

return true; // 表示已处理该URL,不需要WebView继续加载

}

// 对于其他URL,使用WebView默认行为

return super.shouldOverrideUrlLoading(view, url);

}

@Override

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

// 处理错误

}

});

以上是 android的webview不能加载alipays:// 的scheme,提示net::ERRUNKNOWN_URL SCHEME? 的全部内容, 来源链接: utcz.com/p/945068.html

回到顶部