Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
如何在android中从web视图获取当前页面url_Android_Url_Webview - Fatal编程技术网

如何在android中从web视图获取当前页面url

如何在android中从web视图获取当前页面url,android,url,webview,Android,Url,Webview,使用webview.loadUrl(url)方法打开一个url。如果我单击视图上的任何按钮,它将指向另一个页面。现在我想获取定向页面的url。我怎样才能得到它 我还想要在webview上显示的内容。如何获取WebView的内容?我假设您已经设置了WebViewClient。如果没有设置,您可以执行以下操作 webView.setWebViewClient(new MyWebViewClient()); String currentUrl; private class MyWebViewCli

使用
webview.loadUrl(url)
方法打开一个url。如果我单击视图上的任何
按钮
,它将指向另一个页面。现在我想获取定向页面的url。我怎样才能得到它


我还想要在webview上显示的内容。如何获取
WebView
的内容?

我假设您已经设置了
WebViewClient
。如果没有设置,您可以执行以下操作

webView.setWebViewClient(new MyWebViewClient());

String currentUrl;

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {         
            currentUrl=url;
            return true;
        }
    }
在这里,当你点击
WebView
上的任何链接时,它将调用
shouldOverrideUrlLoading()
,你可以在
currentUrl
中找到当前url,请看我的答案 愿它能帮助你

WebView webview = new WebView(context);
webview.setWebViewClient(new WebViewClient()
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

                Log.d("WebView", "your current url when webpage loading.." + url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                Log.d("WebView", "your current url when webpage loading.. finish" + url);
                super.onPageFinished(view, url);
            }

            @Override
            public void onLoadResource(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onLoadResource(view, url);
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                System.out.println("when you click on any interlink on webview that time you got url :-" + url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });

对于API>20,这是处理此问题的最简单的方法:显然还有其他方法使用诸如HTMLCleaner之类的解析器来进行更多控制。然而,这对于获取URL来说是好的和简单的。每次Webview中的URL更改时,请求对象中的URL也会更改

@Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String temp  = request.getUrl().toString();
            if(temp.isEmpty()){
                Log.i(ActivityName, "No url returned!");
            }else{
                Log.i(ActivityName, temp);
            }
            return  false;
        }

您还可以通过重写webviewclient的onpagefinished方法来进行调用。我想指出这一点,因为这是在页面完成加载时调用的

我无法从任何重写的方法获取任何消息。这太棒了。应为所选答案请注意,
currentUrl
在返回时不会更新。另一种方法是覆盖onPageStarted上的
@Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String temp  = request.getUrl().toString();
            if(temp.isEmpty()){
                Log.i(ActivityName, "No url returned!");
            }else{
                Log.i(ActivityName, temp);
            }
            return  false;
        }