无法在Android中的WebView点击事件中获取当前的URL。

问题描述 投票:6回答:2
    private WebView wv;
    public void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      setContentView(R.layout.infoweblinkview);

    wv=(WebView) findViewById(R.id.weblinkview);
    wv.setWebViewClient(new WebViewClient());
    wv.getSettings().setJavaScriptEnabled(true);
    wv.loadUrl(getString(R.string.infourl));


 wv.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String  previousUrl = wv.getUrl();
                }
            });

}
android android-webview
2个回答
12
投票

对于这一点,你可以在你的 WebViewClient 阶层

@Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            return super.shouldOverrideUrlLoading(view, url);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

根据您的要求,使用其中任何一种方法。String url 给你的网址


0
投票

ShouldOverrideUrlLoading()方法只有在新的URL即将加载到当前webview中时才会被调用。因此,要想在单个网页应用程序中点击时接收更新的URL,你需要扩展WebChromeClient类并将其实例设置为你的webview。每当URL更新时,就会调用onProgressChanged,这样你就可以通过webview获得更新的URL。

webView?.webChromeClient = QuartzWebChromeClient() 

在QuartzWebChromeClient的onProgressChanged()里面,更新的URL可以通过webview接收。

 private inner class QuartzWebChromeClient : WebChromeClient() {
    override fun onProgressChanged(view: WebView, newProgress: Int) {
        super.onProgressChanged(view, newProgress)
        Log.d("tag",view.url)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.