Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查webview中的url更改android不工作_Java_Android_Url_Webview - Fatal编程技术网

Java 检查webview中的url更改android不工作

Java 检查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或更

如何将检查Url更改为WebView

@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已弃用。