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

前端之家收集整理的这篇文章主要介绍了java – 禁用WebView链接可在模拟器上运行,但在设备上无效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望禁用我加载到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中该方法将被替换为不同的方法,因此它仍然会调用旧的(现已弃用)方法.

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

猜你在找的Java相关文章