2017-03-06 20 views
6

Chcę wyłączyć linki strony, którą ładuję do mojego obiektu WebView. Mój kod działa idealnie na moim emulatorze z api 25, ale nie na moim telefonie z 23 api.Wyłączanie łączy WebView działa na emulatorze, ale nie na urządzeniu

Jest to kod, który blokuje linki mojego WebView:

public class NoLinksWebViewClient extends WebViewClient { 

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

ja ustawień moje WebViewClient być obiektem typu NoLinksWebViewClient. To działa na emulatorze, ale nie na moim prawdziwym telefonie.

Jak rozwiązać ten problem?

Odpowiedz

-2

Czy javafx.scene.Node.setDisable(boolean arg0) jest opcją? W ten sposób można zablokować elementy zostały użyte

Documentation

9

mój kod działa doskonale na moim emulatora z API 25, ale nie w moim telefonie z 23 API.

Myślę, że istotną różnicą nie jest emulator w porównaniu do urządzenia, ale różne poziomy API. Jeśli spojrzeć na dokumentacji na WebViewClient można zauważyć, że istnieją dwa podobne, ale różne metody:

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

Jak już przesłonić tylko nowszą metodę, na twojej starszych prac logicznych domyślne urządzenie. Dzieje się tak, ponieważ urządzenie z interfejsem API 23 nie mogło wiedzieć, że w API 24 metoda zostanie zastąpiona inną, więc nadal wywołuje starą (obecnie przestarzałą) metodę.

Uważam, że aby rozwiązać problem, należy zastąpić obie te metody.

3

Odpowiedź jest krótka trzeba zastąpić obie metody, które podane poniżej.Płyta shouldOverrideUrlLoading (zobacz Webview, url: String) metoda jest przestarzałe API 24 i shouldOverrideUrlLoading (zobacz WebView, WebResourceRequest życzenie) metoda jest dodane w API 24.

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

Mam nadzieję, że ci to pomogą.

Powiązane problemy