facebook twitter hatena line email

「Android/webview/非推奨コード」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(警告: [deprecation] WebChromeClientのonJsTimeout()は非推奨になりました)
 
(同じ利用者による、間の6版が非表示)
行18: 行18:
 
     @Override
 
     @Override
 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
 +
        // view.loadUrl(request.getUrl().toString());
 
         return false;
 
         return false;
 
     }
 
     }
行31: 行32:
 
==警告: [deprecation] WebViewClientのonReceivedError(WebView,int,String,String)は非推奨になりました==
 
==警告: [deprecation] WebViewClientのonReceivedError(WebView,int,String,String)は非推奨になりました==
 
エラーハンドラーを以下のように変更
 
エラーハンドラーを以下のように変更
 +
 +
@Override
 
  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 
  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 +
    Log.d(TAG, "failingUrl=" + failingUrl);
 +
}
 
 
 
  import android.webkit.WebResourceRequest;
 
  import android.webkit.WebResourceRequest;
 
  import android.webkit.WebResourceError;
 
  import android.webkit.WebResourceError;
 +
@TargetApi(Build.VERSION_CODES.M)
 +
@Override
 
  public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
 
  public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
 +
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
 +
        Log.d(TAG, error.getErrorCode() + " : " + error.getDescription());
 +
    }
 +
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 +
        Log.d(TAG, "failingUrl=" + request.getUrl().toString());
 +
    }
 +
}
 +
@SuppressWarnings("deprecation")
 +
@Override
 +
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 +
    Log.d(TAG, "failingUrl=" + failingUrl);
 +
}
  
 
参考:https://qiita.com/eno314/items/3c7dd6ef7524765f4665
 
参考:https://qiita.com/eno314/items/3c7dd6ef7524765f4665
行54: 行73:
 
     }
 
     }
 
  }
 
  }
 +
 +
公式には"サポートされなくなり呼ばれなくなる"とあるので、削除しても良い。
 +
https://developer.android.com/reference/android/webkit/WebChromeClient?hl=hi#onJsTimeout()

2018年8月23日 (木) 14:34時点における最新版

警告: [deprecation] WebViewClientのshouldOverrideUrlLoading(WebView,String)は非推奨になりました

shouldOverrideUrlLoadingはリンクでブラウザを開く関数(falseを返すと新規でブラウザを開かない)

private class CustomWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }
}

↓ Build.VERSION_CODES.N以降専用のアノテーションを追加する

import android.annotation.TargetApi;
import android.os.Build;
import android.webkit.WebResourceRequest;
private class CustomWebViewClient extends WebViewClient {
    @TargetApi(Build.VERSION_CODES.N)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        // view.loadUrl(request.getUrl().toString());
        return false;
    }
    @SuppressWarnings("deprecation")
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }
}

参考:https://trueman-developer.blogspot.com/2016/12/webviewclientshouldoverrideurlloading.html

警告: [deprecation] WebViewClientのonReceivedError(WebView,int,String,String)は非推奨になりました

エラーハンドラーを以下のように変更

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    Log.d(TAG, "failingUrl=" + failingUrl);
}

import android.webkit.WebResourceRequest;
import android.webkit.WebResourceError;
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Log.d(TAG, error.getErrorCode() + " : " + error.getDescription());
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Log.d(TAG, "failingUrl=" + request.getUrl().toString());
    }
}
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    Log.d(TAG, "failingUrl=" + failingUrl);
}

参考:https://qiita.com/eno314/items/3c7dd6ef7524765f4665

警告: [deprecation] WebChromeClientのonJsTimeout()は非推奨になりました

private class CustomWebChromeClient extends WebChromeClient {
    @Override
    public boolean onJsTimeout() {
        return false;
    }
}

private class CustomWebChromeClient extends WebChromeClient {
    @SuppressWarnings("deprecation")
    @Override
    public boolean onJsTimeout() {
        return false;
    }
}

公式には"サポートされなくなり呼ばれなくなる"とあるので、削除しても良い。 https://developer.android.com/reference/android/webkit/WebChromeClient?hl=hi#onJsTimeout()