Открыть ссылку из Android Webview в обычном браузере как всплывающее окно - PullRequest
13 голосов
/ 17 декабря 2011

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

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

Мой вопрос: как я могу сделать эту ссылку открытой в обычном браузере в качестве всплывающего окна?Это вообще возможно?Ссылка является переменной, поэтому она всегда меняется, ее нельзя жестко закодировать в приложении, чтобы открыть в новом браузере браузера.

Может кто-нибудь сказать мне, если это возможно и как это сделать?Большое спасибо!

Ответы [ 2 ]

28 голосов
/ 17 декабря 2011

Вот пример переопределения загрузки веб-просмотра, чтобы остаться в пределах вашего веб-просмотра или выйти:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class TestWebViewActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


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


class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.contains("somePartOfYourUniqueUrl")){ // Could be cleverer and use a regex
            return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
        } else {
            view.loadUrl(url); // Stay within this webview and load url
            return true;
        }
    }
}
5 голосов
/ 27 июля 2015
public class WebViewActivity extends Activity {

    private WebView webView;
    private ProgressDialog progress;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);
        WebView myWebView = (WebView) findViewById(R.id.webView1);
        myWebView.setWebViewClient(new MyWebViewClient());
        myWebView.loadUrl("https://www.example.com");
    }

    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 web site, 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...