WebViewClientのshouldOverrideUrlLoadingが非推奨になった

AndroidNより変更になったとのこと







現象


webViewでリンクをクリックした時にブラウザで開かないようにするためshouldOverrideUrlLoadingでfalseを返す必要があるが、
Overrides deprecated method in 'android.webkit.WebViewClient'
This inspection reports where deprecated code where deprecated code is used in the specified inspecion scope.
と表示されてしまう



サンプルコード


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    WebView webView = (WebView) findViewById(R.id.webview);

    // WebViewClientの設定
    webView.setWebViewClient(new WebViewClient() {

        @TargetApi(Build.VERSION_CODES.N)
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

            // view.loadUrl(request.getUrl().toString());
            return false;
        }

        // 新しいURLが指定されたときの処理を定義
        @SuppressWarnings("deprecation")
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // 別のActivityやアプリを起動する場合
            //return true;
            // WebView内に読み込み結果を表示する場合
            return false;
        }

        // ページ読み込み開始時の処理
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            Toast.makeText(MainActivity.this, "読み込み開始", Toast.LENGTH_SHORT).show();
        }

        // ページ読み込み完了時の処理
        @Override
        public void onPageFinished(WebView view, String url) {
            Toast.makeText(MainActivity.this, "読み込み完了", Toast.LENGTH_SHORT).show();
        }

        // ページ読み込みエラー時の処理
        @SuppressWarnings("deprecation")
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String url) {
            Toast.makeText(MainActivity.this, "通信エラー", Toast.LENGTH_SHORT).show();
        }
    });
}

AndroidN未満の対策も入れているつもりだけど動作未確認

2016年12月13日火曜日