首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在版本2.2的android webview中加载https获取白屏

在版本2.2的android webview中加载https获取白屏
EN

Stack Overflow用户
提问于 2013-01-12 16:32:45
回答 3查看 4K关注 0票数 2

我需要在android webview中加载https url,但它加载了白屏。

我也处理过public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error),但在加载url时仍然出现白屏,但在logcat中没有例外。

下面是我的代码

代码语言:javascript
复制
public class MainActivity extends Activity { 
private static final String URL = "https://someurl";

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

    WebView myWebView = (WebView)findViewById(R.id.webview);

    WebSettings settings = myWebView.getSettings();

    settings.setJavaScriptEnabled(true);

    settings.setDomStorageEnabled(true);

    myWebView.loadUrl(URL);



    myWebView.setWebViewClient(new MyWebViewClient());


}


private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals(URL)) {

            return false;
        }
        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);


        handler.proceed();
    }
}

}

期待您的回复。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-01-12 16:46:25

handler.proceed();应该让WebView加载https url,让您尝试并加载一个常规的http url,看看WebView是否仍然是白色的。

在安卓系统中,有时会出现一个将WebView渲染为白色的bug。

尝试禁用WebView上的硬件加速,在.xml布局资源中的webview上设置android:layerType="software“属性。

代码语言:javascript
复制
<WebView
    android:id="@+id/webviev"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:layerType="software" />
票数 1
EN

Stack Overflow用户

发布于 2013-01-12 16:47:40

有一些SSL证书在Android 2.2中不受支持,你可以尝试在本地浏览器中加载它,如果它在浏览器上工作,那么它可能会被支持。如果不支持,您至少有以下两个选项

假设您对网站拥有管理员权限,可使用

  1. 更改SSL证书提供商
  2. 可实施类似于SSL not working on Android 2.2 (only in 2.3)

的变通方法

请检查其他Android版本是否也支持SSL。

票数 1
EN

Stack Overflow用户

发布于 2014-04-17 23:40:44

代码语言:javascript
复制
mWebview.setWebViewClient(new WebViewClient() {


        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            super.onReceivedSslError(view, handler, error);
           //Error happens here and returns an empty page.
        }

在2.3设备上,认证验证存在问题。它可能是有效的,但当顺序不正确时,它就会失败。

您可以调用handler.proceed();但我不推荐这样做!因为它破坏了所需的验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14291685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档