我在我的WebView. 现在我需要的是,当用户单击加载页面上的链接时,它必须像普通浏览器一样工作并以相同的WebView. 但它正在打开默认浏览器并在那里加载页面?
我已启用 JavaScript。但它仍然无法正常工作。我忘记了什么吗?
我在我的WebView. 现在我需要的是,当用户单击加载页面上的链接时,它必须像普通浏览器一样工作并以相同的WebView. 但它正在打开默认浏览器并在那里加载页面?
我已启用 JavaScript。但它仍然无法正常工作。我忘记了什么吗?
如果您使用的是 aWebView如果您不想要默认的 Android 行为,则必须自己拦截点击。
WebView您可以使用 a监视事件WebViewClient。你想要的方法是shouldOverrideUrlLoading()。这允许您在选择特定 URL 时执行自己的操作。
你设置WebViewClient你的WebView使用setWebViewClient()方法。
如果您查看WebViewSDK中的示例,则会有一个示例可以满足您的需求。它很简单:
private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
    在某些情况下,如果您获得一个不会触发 url 加载方法的重定向,您可能需要覆盖 onLoadResource。在这种情况下,我尝试了以下方法:
@Override
public void onLoadResource(WebView view, String url)
{
    if (url.equals("http://redirectexample.com"))
    {
        //do your own thing here
    }
    else
    {
        super.onLoadResource(view, url);
    }           
}
    官方文档说,单击 WebView 中的链接将启动处理 URL 的应用程序。您需要覆盖此默认行为
    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });
或者如果方法中没有条件逻辑,只需执行此操作
myWebView.setWebViewClient(new WebViewClient());
    在您的代码中添加这 2 行 -
mWebView.setWebChromeClient(new WebChromeClient()); 
mWebView.setWebViewClient(new WebViewClient());
    该方法boolean shouldOverrideUrlLoading(WebView view, String url)在 API 24 中已弃用。如果您支持新设备,则应使用boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request).
您可以通过执行以下操作来使用两者:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    newsItem.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(request.getUrl().toString());
            return true;
        }
    });
} else {
    newsItem.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
}