WebView shouldOverrideUrlLoading功能

WebView shouldOverrideUrlLoading功能

  • 最近查了一下WebView WebView shouldOverrideUrlLoading接口的资料,发现网上有很多错误的解释。
  • 这里以WebView(58)为基础,记录一下该接口的功能。
错误解释:阻止调用系统浏览器
  • shouldOverrideUrlLoading接口,并非阻止WebView loadUrl时调用系统浏览器。
  • 若想让WebView loadUrl时,不会调用系统浏览器,需要设置自定的WebViewClient。
    # 设置WebViewClient即可
    webView.setWebViewClient(new WebViewClient());
shouldOverrideUrlLoading接口
  • 该接口,主要是给WebView提供时机,让其选择是否对UrlLoading进行拦截。
  • 关于该接口的返回值,True(拦截WebView加载Url),False(允许WebView加载Url)
  • 以下为官网关于该接口返回值的解释:

If a WebViewClient is provided, returning true causes the current WebView to abort loading the URL, while returning false causes the WebView to continue loading the URL as usual.

 webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // WebView不加载该Url
        return true;
    }
});
 webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // WebView加载该Url
        return false;
    }
});
Android中的WebView组件是一个用于显示Web页面的控件。它是一个基于WebKit引擎的控件,可以让Android应用程序内部加载网页,还可以与JavaScript交互。WebView组件提供了一个简单的方式来实现浏览器功能,可以通过加载本地HTML文件或远程URL来显示网页内容。 以下是一些WebView组件的使用示例: 1. 显示本地HTML文件 ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.loadUrl("file:///android_asset/local.html"); ``` 2. 显示远程URL ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.loadUrl("http://www.example.com"); ``` 3. 启用JavaScript ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); ``` 4. 设置WebViewClient ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); ``` 5. 设置WebChromeClient ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // 显示页面加载进度 } }); ``` 6. 与JavaScript交互 ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.addJavascriptInterface(new JavaScriptInterface(), "android"); webView.loadUrl("javascript:android.showToast('Hello world!')"); ``` 其中JavaScriptInterface是一个Java对象,用于与JavaScript交互。在JavaScript中,可以通过android对象来调用Java方法。例如: ```javascript function showToast(message) { android.showToast(message); } ``` 这样就可以在WebView中显示一个Toast提示。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值