WebViewClient onReceivedError est obsolète, la nouvelle version ne détecte pas toutes les erreurs

Dans le SDK Android 23, onReceivedError(WebView view, int errorCode, Ssortingng description, Ssortingng failingUrl) est obsolète et remplacé par onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) . Cependant, si je mets mon téléphone en mode Avion et que je charge une URL sur mon site Web, seule la version obsolète de la méthode est appelée.

onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) n’est également pas utile, car il ne détecte que les erreurs supérieures à 500, et onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) un code d’état 109.

Existe-t-il un moyen non déconseillé de détecter le chargement de WebView?

Veuillez noter que le périphérique mobile sur lequel vous effectuez des tests doit exécuter Android Marshmallow (API 23). Même si vous développez votre application sur API 23 SDK, puis exécutez l’application sur Android Lollipop, vous obtiendrez toujours “l’ancien” onReceivedError , car il s’agit de la fonctionnalité du système d’exploitation et non d’un SDK.

En outre, le “code d’erreur 109” (je suppose que c’est net::ERR_ADDRESS_UNREACHABLE ) n’est pas un code d’erreur HTTP, c’est le code d’erreur de Chrome. onReceivedHttpError est uniquement appelé pour les erreurs reçues du serveur via HTTP. Lorsque l’appareil est en mode avion, il ne peut pas recevoir de réponse d’un serveur.

Vous pouvez également faire ce qui suit:

 @SuppressWarnings("deprecation") @Override public void onReceivedError(WebView view, int errorCode, Ssortingng description, Ssortingng failingUrl) { // Handle the error } @TargetApi(android.os.Build.VERSION_CODES.M) @Override public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) { // Redirect to deprecated method, so you can use it in all SDK versions onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toSsortingng(), req.getUrl().toSsortingng()); } 

Assurez-vous d’importer android.annotation.TargetApi

Heureux codage!