Java 检查webview中的url更改android不工作
如何将检查Url更改为WebViewJava 检查webview中的url更改android不工作,java,android,url,webview,Java,Android,Url,Webview,如何将检查Url更改为WebView @Deprecated public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { String url = view.getUrl(); return true; } 此函数仅适用于第一次更改我不知道为什么要添加@Deprecated注释,但正如我所知,旧的应该重写分配方法 因此,如果您的minSdkVersion为24或更
@Deprecated
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
String url = view.getUrl();
return true;
}
此函数仅适用于第一次更改我不知道为什么要添加
@Deprecated
注释,但正如我所知,旧的应该重写分配
方法
因此,如果您的minSdkVersion
为24或更高,您只能使用公共布尔值shouldOverrideUrlLoading(WebView,WebResourceRequest)
,但如果URL发生更改,使用shouldOverrideUrlLoading()
(就像您的代码那样)只需获取上一个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);
...
别忘了将
放入AndroidManifest.xml
我不知道为什么要添加@Deprecated
注释,但正如我所知,旧的确实应该重写方法
因此,如果您的minSdkVersion
为24或更高,您只能使用公共布尔值shouldOverrideUrlLoading(WebView,WebResourceRequest)
,但如果URL发生更改,使用shouldOverrideUrlLoading()
(就像您的代码那样)只需获取上一个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);
...
别忘了将
放入AndroidManifest.xml
请用于此问题shouldInterceptRequest
@Override
public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {
return super.shouldInterceptRequest(view, url);
}
它可用于检查webview中的所有url更改请用于此问题shouldInterceptRequest
@Override
public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {
return super.shouldInterceptRequest(view, url);
}
它可用于检查webview中的所有url更改shouldInterceptRequest已弃用。shouldInterceptRequest已弃用。