2015-09-19 13 views

Antwort

13

Google shouldInterceptRequest Verfahren modifizierte WebResourceRequest Anfrage verwenden anstelle von String url

Nein, sie hat eine SekundenshouldInterceptRequest() Methode. Beide sind in API Level 21+ verfügbar. Die String Variante ist auf API Level 11+ verfügbar. Während die String als veraltet gekennzeichnet ist, sollte die String-Variante aus Gründen der Abwärtskompatibilität längere Zeit unterstützt werden.

Gibt es eine Möglichkeit, eine generische Klasse zu schreiben, die den WebViewClient erweitert und beide Methoden behandelt?

Der eingebaute bei der Umsetzung der WebResourceRequest Version von shouldInterceptRequest() ruft einfach die String Implementierung von shouldInterceptRequest():

public WebResourceResponse shouldInterceptRequest(WebView view, 
     WebResourceRequest request) { 
    return shouldInterceptRequest(view, request.getUrl().toString()); 
} 

(von the source code ab jetzt) ​​

Also, haben Sie zwei Möglichkeiten :

  1. Überschreiben Sie einfach die String Edition, wenn Sie die WebResourceRequest nicht benötigen, und sie wird auf allen relevanten API-Ebenen verwendet.

  2. Überschreiben Sie beide, wissend, dass das WebResourceRequest eines auf API Level 21+ und das String Edition auf API Level 11-20 verwendet wird.

+0

Danke CommonsWare, in der Tat, was ich tat, beide Methoden wurde die Implementierung und Verwendung von '@TargetApi (Build.VERSION_CODES.LOLLIPOP)' auf der einen von API21. – Krystian

+0

Ich denke, Override String-Version sollte gut sein. –

Verwandte Themen