「Android/webview/非推奨コード」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「 ==警告: [deprecation] WebViewClientのshouldOverrideUrlLoading(WebView,String)は非推奨になりました== shouldOverrideUrlLoadingはリンクでブラウザを...」) |
(→警告: [deprecation] WebChromeClientのonJsTimeout()は非推奨になりました) |
||
(同じ利用者による、間の9版が非表示) | |||
行2: | 行2: | ||
==警告: [deprecation] WebViewClientのshouldOverrideUrlLoading(WebView,String)は非推奨になりました== | ==警告: [deprecation] WebViewClientのshouldOverrideUrlLoading(WebView,String)は非推奨になりました== | ||
shouldOverrideUrlLoadingはリンクでブラウザを開く関数(falseを返すと新規でブラウザを開かない) | shouldOverrideUrlLoadingはリンクでブラウザを開く関数(falseを返すと新規でブラウザを開かない) | ||
− | + | ||
− | public boolean shouldOverrideUrlLoading(WebView view, String url) { | + | 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.annotation.TargetApi; | ||
import android.os.Build; | import android.os.Build; | ||
import android.webkit.WebResourceRequest; | import android.webkit.WebResourceRequest; | ||
− | @TargetApi(Build.VERSION_CODES.N) | + | 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; | ||
+ | } | ||
} | } | ||
行25: | 行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 | ||
==警告: [deprecation] WebChromeClientのonJsTimeout()は非推奨になりました== | ==警告: [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() |
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()