【问题标题】:webview loadUrl opens the url in browserwebview loadUrl 在浏览器中打开 url
【发布时间】:2013-02-05 11:04:05
【问题描述】:

我试图在 webview 中打开 url,但它正在外部浏览器中打开 url。

我的代码是

public class MainActivity extends Activity
{

    private WebView webView;

    String URL = "https://login.salesforce.com/services/oauth2/authorize?response_type=token&display=touch&client_id=3MVG9Y6d_Btp4xp7w.6oGLerlRztTTUKMEL8QWHvuB5miUgdJzQ0HgnMB7dhm1mTiluRv4ud9cZYeFcAz7hXP&redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Foauth2%2Fsuccess";
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);



        setContentView(R.layout.webview);

        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);

        webView.getSettings().setDomStorageEnabled(true);
        webView.loadUrl(URL);
        //webView.loadUrl("https://www.google.co.in/");
        webView.setWebViewClient(new MyWebViewClient());
    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals(url)) {
                // This is your web site, so do not override; let the WebView to 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;
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            super.onReceivedSslError(view, handler, error);

            // this will ignore the Ssl error and will go forward to your site
            handler.proceed();
        }
    }

}

如果 url 是 https:www.google.com 则 url 仅在 webview 中打开。我用谷歌搜索很难找到解决方案,但我找不到它。如何解决问题?

【问题讨论】:

    标签: android https android-webview


    【解决方案1】:

    问题在于你的

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals(url)) {
                // This is your web site, so do not override; let the WebView to 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;
        }
    

    它试图以不同的意图加载 URL,因此您的默认浏览器会启动。 你真的想检查什么

    Uri.parse(url).getHost().equals(url)

    尝试放置日志进行检查,您会发现问题所在。

    【讨论】:

    • 谢谢哥们!!节省了我的时间
    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2015-06-19
    • 2014-01-17
    • 2016-12-29
    • 1970-01-01
    • 2013-03-11
    • 2014-05-22
    相关资源
    最近更新 更多