我希望禁用我加载到WebView对象的页面的链接。我的代码在我的模拟器上使用api 25完美运行,但在23 api的手机上却没有。
这是阻止我的WebView链接的代码:
public class NoLinksWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return true;
}
}
我将我的WebViewClient设置为NoLinksWebViewClient类型的对象。它可以在模拟器上实现,但不能在我的真实手机上实现。
如何解决这个问题?
答案 0 :(得分:10)
我的代码在我的模拟器上使用api 25完美运行,但在我的手机上没有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中该方法将被替换为另一个方法,因此它仍然会调用旧的(现已弃用)方法。
我相信要解决这个问题你应该覆盖这两种方法。
答案 1 :(得分:4)
简短的回答是你需要覆盖下面给出的两种方法。在API 24中不推荐使用 shouldOverrideUrlLoading(WebView视图,String url)方法,而 shouldOverrideUrlLoading(WebView视图,在API 24中添加了WebResourceRequest request)方法。
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return true;
}
希望这些可以帮助你。
答案 2 :(得分:-2)
javafx.scene.Node.setDisable(boolean arg0)
可以选择吗?这样你就可以阻止使用元素