2015-09-24 147 views
41

Android SDKではonReceivedError(WebView view, int errorCode, String description, String failingUrl)は非推奨となり、onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)に置き換えられました。しかし、飛行機モードに電話をかけてWebViewにURLをロードすると、非推奨のバージョンのメソッドだけが呼び出されます。WebViewClient onReceivedErrorは非推奨です。新しいバージョンではすべてのエラーが検出されません。

onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse)も、500を超えるエラーを検出するだけであり、109ステータスコードが取得されるため、便利ではありません。

私のWebViewの読み込みに失敗したことを非推奨にする方法はありますか?

+0

Android SDK 23 –

+0

@KaranMerでテストしていることを確認してください。これは既に該当します。 –

+2

テストしているモバイルデバイスは、実際にAndroid Marshmallow(API 23)を実行していますか? API 23 SDKでアプリを開発してAndroid Lollipopでアプリを実行しても、SDKではなくOSの機能であるため、「古い」onReceivedErrorが得られます。また、「エラーコード109」(これはnet :: ERR_ADDRESS_UNREACHABLEだと思います)はHTTPエラーコードではなく、Chromeのエラーコードです。 'onReceivedHttpError'は、HTTP経由でサーバーから受信したエラーに対してのみ呼び出されます。デバイスが飛行機モードにあるとき、おそらくサーバからの応答を受信することはできません。 –

答えて

23

実際にAndroid Marshmallow(API 23)を実行する必要があることに注意してください。 API 23 SDKでアプリを開発してAndroid Lollipopでアプリを実行しても、それはSDKではなくOSの機能であるため、「古い」onReceivedErrorが表示されます。

また、「エラーコード109」(これはnet::ERR_ADDRESS_UNREACHABLEと思われます)はHTTPエラーコードではないため、Chromeのエラーコードです。 onReceivedHttpErrorは、HTTP経由でサーバーから受信したエラーに対してのみ呼び出されます。デバイスが飛行機モードにあるとき、おそらくサーバからの応答を受信することはできません。

+3

これはどのように答えができます..それは解決策を与えません – Kasnady

108

また、次のことができます:

@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をインポートしていることを確認してください!

+2

これは動作します! 30.11.2015、android 4x、最新のsdk for 5x – waza123

+1

フィードバックありがとうございます – xdevs23

+7

新しいSDK 23コールバックは、読み込みに失敗したすべてのリソース(iframe、imageなど)に対して呼び出されることに注意してください。ページ...したがって、エラーの処理はそれに応じて変更する必要があります。 – k2col

関連する問題