Intereting Posts

Отключение ссылок WebView работает на эмуляторе, но нет на устройстве

Я хочу отключить ссылки на страницу, которую загружаю в мой объект WebView. Мой код отлично работает на моем эмуляторе с api 25, но не на моем телефоне с 23 api.

Это код, который блокирует ссылки моего WebView:

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

Я устанавливаю свой WebViewClient как объект типа NoLinksWebViewClient. Это трюк на эмуляторе, но не на моем реальном телефоне.

Как это решить?

Мой код отлично работает на моем эмуляторе с 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 этот метод будет заменен другим, поэтому он по-прежнему вызывает старый (теперь устаревший) метод.

Я считаю, что для исправления проблемы вы просто должны переопределить оба этих метода.

Короткий ответ: вам нужно переопределить оба метода, приведенные ниже. Метод toOverrideUrlLoading (WebView view, String url) устарел в API 24, и в API 24 добавлен метод requestOverrideUrlLoading (WebView view, WebResourceRequest) .

  @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; } 

Надеюсь, они вам помогут.

Является ли javafx.scene.Node.setDisable(boolean arg0) опцией? Таким образом, вы можете блокировать использование элементов

Документация