Откройте Play Store, если ссылка market: // нажата с помощью WebChromeClient - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу открыть Play Store, если пользователь нажимает на ссылку этого типа: market://
Я пытался использовать getUrl(), но он выбирает URL только в первый раз, а не когда пользователь нажимает дополнительные ссылки внутри webView.
Вот мой код:

    swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout);
    swipeLayout.setOnRefreshListener(this);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    progressBar.setMax(100);
    webview = (WebView) findViewById(R.id.dashboard);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webview.loadUrl("http://example.test");
    webview.setWebViewClient(new WebViewClient());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    } else {
        webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
    progressBar.setProgress(0);
    webview.setWebChromeClient(new WebChromeClient());

    webview.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {

            progressBar.setProgress(progress);

            if (progress == 100) {
                progressBar.setVisibility(View.GONE);
            } else {
                progressBar.setVisibility(View.VISIBLE);
            }
            super.onProgressChanged(view, progress);
        }
    });

1 Ответ

0 голосов
/ 22 сентября 2018

Я сделал так, чтобы это работало так:
Создан новый подкласс:

    private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getScheme().equals("market")) {
            try {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                Activity host = (Activity) view.getContext();
                host.startActivity(intent);
                return true;
            } catch (ActivityNotFoundException e) {
                Uri uri = Uri.parse(url);
                view.loadUrl("http://play.google.com/store/apps/" + uri.getHost() + "?" + uri.getQuery());
                return false;
            }
        }
        return false;
    }
}

Также добавлен подкласс в веб-просмотре: webview.setWebViewClient(new HelloWebViewClient());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...