【问题标题】:Webview doesn't load the URL , but browser doesWebview 不加载 URL,但浏览器加载
【发布时间】:2014-11-17 04:47:13
【问题描述】:

因此,从我的第一个屏幕中,我将 URL 传递给要在 webview 中启动的活动。但是当 webview 启动时,它显示“web page not available - The web page at URL might be temporarily down or it may have moved permanently to a new web address

但是当我在 android 浏览器中启动相同的 URL 时,它工作正常。这是我在 webview 中启动该 URL 的代码

    super.onCreate(savedInstanceState);

    String url = "";
    url = getIntent().getStringExtra("loginURL");
    WebView urlWebView = new WebView(this);
    urlWebView.setWebViewClient(new WebViewClient());

    urlWebView.getSettings().setJavaScriptEnabled(true);
    urlWebView.loadUrl(url);
    this.setContentView(urlWebView);

我做错了什么?

【问题讨论】:

  • 您是否在清单文件中添加了互联网权限? uses-permission android:name="android.permission.INTERNET"></uses-permission>
  • 是的,我已经添加了互联网权限
  • 你确定你在url字符串中得到正确的URL?
  • 检查以http://https://开头的网址
  • 是的,它以 https:// 开头

标签: android webview


【解决方案1】:

我发现了问题。问题是我使用的 URL 具有 https:// 并且该 URL 的 SSL 证书是自签名的。 Does the Web View on Android support SSL? 的解决方案帮助我解决了这个问题。

我在代码中添加了以下部分

import android.net.http.*; //added this import statement

urlWebView.setWebViewClient(new WebViewClient(){

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

希望这对其他用户有所帮助。

【讨论】:

  • 当心。使用此方法的应用程序或更新将在 Google Play 中被拒绝。见this post
  • @kibitzerCZ - 是的,我知道这一点。 Google 要求显示使用自签名 SSL 证书的警告消息。
【解决方案2】:

确保您正在加载的网址字符串以“www”为前缀,即“https://www.google.com”而不是“https://google.com”

奇怪的是,这解决了问题,至少在我这边。

【讨论】:

    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多