加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 禁用WebView链接可在模拟器上运行,但在设备上无效

发布时间:2020-12-14 16:33:01 所属栏目:Java 来源:网络整理
导读:我希望禁用我加载到WebView对象的页面的链接.我的代码在我的模拟器上使用api 25完美运行,但在我的手机上没有23 api. 这是阻止我的WebView链接的代码: public class NoLinksWebViewClient extends WebViewClient { @Override public boolean shouldOverrideU
我希望禁用我加载到WebView对象的页面的链接.我的代码在我的模拟器上使用api 25完美运行,但在我的手机上没有23 api.

这是阻止我的WebView链接的代码:

public class NoLinksWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view,WebResourceRequest request) {
        return true;
    }
}

我将我的WebViewClient设置为NoLinksWebViewClient类型的对象.它可以在模拟器上实现,但不能在我的真实手机上实现.

怎么解决这个?

解决方法

My code works perfectly on my emulator with api 25,but not on my phone with 23 api.

我认为关键的区别不是模拟器与设备,而是不同的API级别.
如果您查看WebViewClient上的文档,您会注意到有两种相似但不同的方法:

// since API 24
boolean shouldOverrideUrlLoading(WebView view,WebResourceRequest request)
// before API 24,now deprecated
boolean shouldOverrideUrlLoading(WebView view,String url)

由于您只覆盖了较新的方法,因此在旧设备上默认逻辑可以正常工作.发生这种情况是因为显然API 23设备无法知道在API 24中该方法将被替换为不同的方法,因此它仍然会调用旧的(现已弃用)方法.

我相信要解决这个问题你应该覆盖这两种方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读