URL загрузки веб-браузера, но открытие контента в браузере по умолчанию? - PullRequest
0 голосов
/ 09 февраля 2019

Он открывает мою ссылку в Webview, но когда я пытаюсь открыть гиперссылки и содержимое веб-страницы или навигационной ссылки, он начинает открываться с помощью браузера по умолчанию.

public class MainActivity extends Activity {

    private WebView mWebView;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = findViewById(R.id.activity_main_webview);


        mWebView.setWebViewClient(new WebViewClient());

        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);


         mWebView.loadUrl("http://");
    }

    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }

}

Класс MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (Objects.requireNonNull(Uri.parse(url).getHost()).endsWith("http://www.ieltsmadeeasy.tk/")) {
        return false;
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    view.getContext().startActivity(intent);
    return true;
}

}

Я хочу просмотреть весь веб-сайт в веб-представлении, а не любой браузер, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 09 февраля 2019

Вот некоторая документация о WebViews: https://developer.android.com/guide/webapps/webview#java

Проблема в том, что вы не переопределяете функцию shouldOverrideUrlLoading(view, url) WebViewClient, так как используете функцию по умолчанию.

Если вы используете это как WebViewClient, он должен работать (скопировано из примеров в документации):

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("https://www.example.com")) {
            // This is my website, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

Итак, просто возьмите этот класс и измените строку mWebView.setWebViewClient(new WebViewClient()); на mWebView.setWebViewClient(new MyWebViewClient());

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