Android WebView щелкает открытым в WebView, а не в браузере по умолчанию - PullRequest
29 голосов
/ 03 апреля 2012

Я сделал один пример приложения, использующего WebView, в этом веб-представлении URL-адрес поступает из веб-служб.Он работает нормально, но если я нажму на любую ссылку в этом WebView, он автоматически перейдет на веб-браузер по умолчанию.Но я хочу открыть только в веб-просмотра моего приложения.Вот мой код:

WvBikeSite = (WebView) findViewById(R.id.wv_bikeWebsite);
wvBikeSite.loadUrl(getBundle.getString("www"));

Ответы [ 12 ]

69 голосов
/ 03 апреля 2012

Вы должны настроить webViewClient для вашего webView.

Пример:

this.mWebView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return true;
    }
});
10 голосов
/ 03 апреля 2012

Вам необходимо настроить WebViewClient, чтобы переопределить это поведение (открытие ссылок с помощью веб-браузера). Вы, очевидно, объявили свой WebView, но затем настроили WebViewClient следующим образом:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());

Затем вам нужно определить свой WebViewClient ():

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // Designate Urls that you want to load in WebView still.
            return false;
        }

        // Otherwise, give the default behavior (open in browser)
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

Затем запустите ваш WebViewClient:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());

http://developer.android.com/guide/webapps/webview.html

5 голосов
/ 17 июня 2013

Я столкнулся с той же проблемой, и я просто исправил ее, добавив одну строку.

webview.setWebViewClient(new WebViewClient());

, и это решило мою проблему.

2 голосов
/ 03 апреля 2012

Вам необходимо вызвать wvBikeSite.setWebViewClient, например:

    MyWebViewClient wvc = new MyWebViewClient();
    wvBikeSite.setWebViewClient(wvc);

Где переопределения MyWebViewClient должны OverrideUrlLoading, а именно:

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
1 голос
/ 01 мая 2017

Попробуйте, этот метод устарел.

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return super.shouldOverrideUrlLoading(view, request);
        }
1 голос
/ 26 октября 2014

Мне это понравилось, и он отлично работает ..

mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null && url.startsWith("http://")) {
                mWebView.loadUrl(url);
                return true;
            } else {
                return false;
            }
        }
    });
1 голос
/ 03 апреля 2012

Вы всегда можете открыть URL-адрес в веб-просмотре, используя это:

      @Override
  public void onCreate(Bundle savedInstanceState) {
     webview.setWebViewClient(new MyWebViewClient());
 webview.getSettings().setJavaScriptEnabled(true);
 webview.getSettings().setPluginsEnabled(true);
     }


     private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {


            view.loadUrl(url);
            return true;
        }

        @Override
        public void onLoadResource(WebView  view, String  url){

        }
    }    
0 голосов
/ 17 марта 2018

Используйте этот код:

// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());       
0 голосов
/ 03 января 2018

Большая часть ответа верна, но обратите внимание, что: SupportMultipleWindows должно быть установлено как ложное.

mWebView.getSettings().setSupportMultipleWindows(false);

и теперь установите webViewClint и получите загрузочный URL.

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){

    Log.d(TAG,"URL: "+url);
    view.loadUrl(url);

    /**
     * if you wanna open outside of app
     if (url != null && url.startsWith(URL)) {
     view.loadUrl(url);
     return false;
     }
     // Otherwise, give the default behavior (open in browser)
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     startActivity(intent);**/
    return true;

}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);
}

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);

    }
});
0 голосов
/ 30 июля 2016
webview.setWebViewClient(new WebViewClient());
webview.loadUrl(url);

Установить клиент веб-просмотра.

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