【发布时间】:2013-01-12 08:32:44
【问题描述】:
我需要在 android webview 中加载 https url,但加载时会出现白屏。
我也处理了public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error),但在加载 url 时仍然出现白屏,但 logcat 中没有异常。
下面是我的代码
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();
}
}
}
期待您的回复。
谢谢
【问题讨论】:
-
您需要一个经过验证且受信任的 SSL 证书,还请注意,如果您的 SSL 颁发者是像 GoDaddy 这样便宜的颁发者,则还有一些称为 mid-Certificate 或类似的东西,如果缺少此中间证书则不会在 PC 浏览器上不会出错,但在移动浏览器上会出错,有一种解决方法可以在移动浏览器上打开不受信任的证书,但设置起来真的很复杂
-
@Shehabix 谢谢。你能告诉我们这个错误的解决方法吗?
-
你有没有试过加载一个普通的http url,看看WebView是否仍然是白色的?
-
@hsigmond 是的常规 http 加载完美。