WebView - открыть цель = _blank ссылки как target = _self - PullRequest
0 голосов
/ 17 сентября 2018

Мое приложение загружает сайт с помощью веб-просмотра.Некоторые ссылки имеют цель _blank и открываются в новом окне

public class EkChromeViewClient extends android.webkit.WebChromeClient {
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        Log.d("!!!new window!!!", "yes");

        WebView newWebView = new WebView(view.getContext());
        newWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        newWebView.getSettings().setDomStorageEnabled(true);
        newWebView.getSettings().setSupportMultipleWindows(true);
        newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        newWebView.setWebViewClient(new EkWebViewClient());

        view.addView(newWebView);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();

        return true;
    }

    @Override
    public void onCloseWindow(WebView window) {
        Log.d("!!!close window!!!", "yes");
        super.onCloseWindow(window);
    }
}

Но мне нужно открывать все URL только в одном окне, игнорируя target = _blank

1 Ответ

0 голосов
/ 07 июня 2019

Вам нужно сделать что-то подобное.

webView.setWebChromeClient(new WebChromeClient() {
@Override
        public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
            Uri parsedUri = Uri.parse(view.getUrl());
            WebView newWebView = new WebView(view.getContext());
            view.addView(newWebView);
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
            transport.setWebView(newWebView);
            resultMsg.sendToTarget();
            PackageManager packageManager = getPackageManager();
            Intent browseIntent = new Intent(Intent.ACTION_VIEW).setData(parsedUri);
            if (browseIntent.resolveActivity(packageManager) != null) {
                startActivity(browseIntent);
                return true;
            }
            return true;
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...