问题描述
在Android 10以上的真机运行一个 http 请求获取播放url 在播放器进行播放结果,结果打开播放页面直接闪退报以下错误:java.lang.IllegalStateException: Unable to extract the trust manager on Android10Platform
原因分析:
根据报错提示可以发现这个异常提示 OkHttp 在 Android 10 及更高版本中无法从 SSLContext 中提取 TrustManager。设置 ClientBuilder.sslSocketFactory 主要是为了请求的时候跳过证书验证,可以发现方法已经过时了。
解决方案:
替换过时参数,考虑使用 OkHttpClient 内置的配置来设置 TrustManager,而不是手动设置 SSLSocketFactory。
ClientBuilder.sslSocketFactory(createSSLSocketFactory(), new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
});