getTrustManagerFromSSLSocketFactory
// 18(samsung) 19 (oppo) sslSocketFactory -- sslParameters -- trustManager
// 22(oppo) 24(hw) 27(nexus) sslSocketFactory -- sslParameters -- x509TrustManager
public TrustManager getTrustManagerFromSSLSocketFactory(SSLSocketFactory sslSocketFactory) {
try {
TrustManager result = null;
Field fieldSslPm = sslSocketFactory.getClass().getDeclaredField("sslParameters");
fieldSslPm.setAccessible(true);
Object objSSLParameters = fieldSslPm.get(sslSocketFactory);
if(Build.VERSION.SDK_INT > 19) {
Field fieldTmg = objSSLParameters.getClass().getDeclaredField("x509TrustManager");
fieldTmg.setAccessible(true);
result = (TrustManager)fieldTmg.get(objSSLParameters);
} else {
Field fieldTmg = objSSLParameters.getClass().getDeclaredField("trustManager");
fieldTmg.setAccessible(true);
result = (TrustManager)fieldTmg.get(objSSLParameters);
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}