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中该方法将被替换为不同的方法,因此它仍然会调用旧的(现已弃用)方法.

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

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。