如何检查将网址更改为WebView
@Deprecated
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
String url = view.getUrl();
return true;
}
此功能仅在第一次更改时起作用
答案 0 :(得分:1)
不知道为什么要添加@Deprecated
批注,但是据我所知,旧的shouldOverrideUrlLoading
方法确实是deprecated in API level 24.
因此,如果您的minSdkVersion
为24或更高,则只能使用public boolean shouldOverrideUrlLoading(WebView, WebResourceRequest)
,但是使用shouldOverrideUrlLoading()
(就像您的代码一样)只能抓住上一个 URL(如果URL更改)。如果您想在更改网址后获取当前网址,可以使用@JavascriptInterface
首先,您应该创建一个自定义WebViewClient
public class MyWebViewClient extends WebViewClient {
// inject javascript method 'onUrlChange'
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.android.onUrlChange(window.location.href);");
};
// if your minSdkVersion is 24 you can only use this
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
String url = view.getUrl();
// Log.d("LOG","previous_url: " + url);
return false;
}
static class MyJavaScriptInterface {
@JavascriptInterface
public void onUrlChange(String url) {
// Log.d("LOG", "current_url: " + url);
}
}
}
如果需要,我将两种方法都放入了其中,您可以取消注释Log.d(...)
行以检查URL
在您的MainActivity.java
中...
WebView mWebView = (WebView) findViewById(R.id.YOUR_VIEW_ID);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new MyWebViewClient());
mWebView.addJavascriptInterface(new MyWebViewClient.MyJavaScriptInterface(),
"android");
mWebView.loadUrl(YOUR_TARGET_URL);
...
不要忘记将<uses-permission android:name="android.permission.INTERNET" />
放入AndroidManifest.xml