@niknik_ykt
Самоучка. Энтузиаст.

Как настроить приложение на webview, чтобы оно открывало только «родные» ссылки?

Приветы. Есть у меня довольно простенькое приложение на webview. Проблема в том, что оно открывает все ссылки внутри приложения. То есть, по сути, пытается быть браузером. Как определить список ссылок, которые будут открываться внутри приложения, чтоб остальныө уже предлогалось открыть в браузере и т.п.?
P.S. у меня более 30 "родных" ссылок
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
public class MyWebViewClient extends WebViewClient {
  @Override
   public boolean shouldOverrideUrlLoading(WebView view,final String url) {
//try to find browse activity to handle uri
        final Uri parsedUri = Uri.parse(url);

        AlertDialog alertdialog = new AlertDialog.Builder(activity)
                .setIcon(R.mipmap.alert)
                .setTitle(Objects.requireNonNull(RawPrinterApp.getAppContext()).getString(R.string.open_url))
                .setMessage(url).setNegativeButton(Objects.requireNonNull(RawPrinterApp.getAppContext()).getString(R.string.btn_no),null)
                .setPositiveButton(Objects.requireNonNull(RawPrinterApp.getAppContext()).getString(R.string.btn_yes), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        webView.loadUrl(url);
                    }
                }).create();
        alertdialog.setButton(AlertDialog.BUTTON_NEUTRAL,Objects.requireNonNull(RawPrinterApp.getAppContext()).getString(R.string.reSelectTxt), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                PackageManager packageManager = activity.getPackageManager();
                Intent browseIntent = new Intent(Intent.ACTION_VIEW).setData(parsedUri);

                // Create intent to show chooser
                Intent chooser = Intent.createChooser(browseIntent, Objects.requireNonNull(RawPrinterApp.getAppContext()).getString(R.string.open_url));

                if (browseIntent.resolveActivity(packageManager) != null) {
                    activity.startActivity(chooser);
                }

            }
        });
        alertdialog.show();
       return true; // говорим что стандартное поведение было переопределено и сама вьюшка не дергается
   }
}

Условия появления диалога и вообще нужен он вам или нет переделаете сами
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы