在我的Android应用程序中,必须使用API级别23到27,我会使用正确的网站URL显示Web视图。当页面加载时,我能够观察" shouldOverrideUrlLoading,onPageStarted和onPageFinished"成功。
但在我的网站上,有一个必须在我的应用中处理的自定义网址。我的自定义网址类似于" tvloc:// lat:123.45,lng:456.78"。当我在网页视图中点击自定义网址链接时,它不会呼叫任何观察者
如何解决问题以检测自定义URL。这是我的代码:
client = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.v(TAG, "shouldOverrideUrlLoading -> " + url);
return checkURL(url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
return checkURL(url);
}
private boolean checkURL(String url) {
Log.v(TAG, "shouldOverrideUrlLoading -> " + url);
if (url.startsWith(urlPrefix)) {
return true;
}
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.v(TAG, "onPageStarted -> " + url);
if (!progressDialog.isShowing()) {
progressDialog.show();
}
}
@SuppressLint("JavascriptInterface")
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
Log.v(TAG, "onPageFinished -> " + url);
}
};
webView.setWebViewClient(client);
答案 0 :(得分:0)
WebView
可能无法检测到" tvloc:// lat:123.45,lng:456.78"作为一个URL。尝试更改为" http://tvloc=lat:123.45,lng:456.78"。