如何检查Url变为WebView
@Deprecated
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
String url = view.getUrl();
return true;
}
此功能仅在第一次更改时有效
最佳答案
不知道为什么添加 @Deprecated
注释但据我所知旧的 shouldOverrideUrlLoading
方法确实deprecated in API level 24.
所以如果你的minSdkVersion
24或以上只能使用public boolean shouldOverrideUrlLoading(WebView, WebResourceRequest)
,但使用 shouldOverrideUrlLoading()
(就像您的代码一样)如果 URL 更改,则可以获取前一个 URL。如果你想在 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
关于java - 检查 webview android 中的 url 更改不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956309/