Android SDK 23 onReceivedError(WebView view, int errorCode, String description, String failingUrl)
は廃止され、onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)
に置き換えられました。ただし、携帯電話を機内モードにしてURLを読み込むと、 WebView、非推奨バージョンのメソッドのみが呼び出されます。
onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse)
も有用ではありません。500を超えるエラーのみを検出し、109ステータスコードを取得しています。
WebViewのロードに失敗したことを検出する非推奨の方法はありますか?
テストするモバイルデバイスは、実際にAndroid Marshmallow(API 23)を実行する必要があることに注意してください。 API 23 SDKでアプリを開発し、Android Lollipopでアプリを実行しても、「古い」onReceivedError
を取得します。これはOSの機能であり、 SDK。
また、「エラーコード109」(これはnet::ERR_ADDRESS_UNREACHABLE
であると思います)はHTTPエラーコードではなく、Chromeのエラーコードです。 onReceivedHttpError
は、HTTP経由でサーバーから受信したエラーに対してのみ呼び出されます。デバイスが機内モードの場合、サーバーから応答を受信できない可能性があります。
次のこともできます。
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String 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().toString(), req.getUrl().toString());
}
インポートすることを確認してくださいAndroid.annotation.TargetApi
ハッピーコーディング!