我将恢复我在网上找到的一些提示来解决我的问题。
我有一些https连接,需要管理一些cookie,所以我使用'mythic'android WebView来获取我需要的信息(html页面的一部分)。
所以这就出现了问题:如何将一些html从webview“传输”到另一个? (例如:我有一个专为桌面浏览器设计的网站邮件网站,我希望在我的应用程序中显示适合我设备屏幕的邮件内容。)
即使解决方案有点复杂,我也会尝试解释解决方案的一部分。
我在'onCreate'活动方法中定义了一个要从webview调用的java类接口:
WebView webview = (WebView) findViewById(R.id.webview);
(...)
webview.addJavascriptInterface(new MyJavaInterface(), "myJavaInterface");
其中MyJavaInterface类包含public void myMethod(String myHtml)
然后我使用javascript注入从我的webview获取html,使用istruction webview.loadUrl("javascript:window.myJavaInterface.myMethod(...)");
调用我的自定义java接口,并在myMethod中获取我需要传输到新的webview(String myHtml)的html。 / p>
在这个方法(public void myMethod(String myHtml)
)中,我使用指令
newwebview.loadData("<html><body>"+myHtml+"</body></html>", "text/html", "utf-8");
来实现我的目标。但这并不全是因为我的新webview将显示我需要的html,除了图像(外部css-stylesheets和javascript文件)。
那么:如何'传输'图像?
答案 0 :(得分:0)
以下是我的问题的解决方案:
在MyJavaInterface类的构造函数中,我把代码放在了ssl证书管理之上:
try{
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {;}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {;}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {}; }
}}, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
}catch (Exception e) {;}
找到每个public void myMethod(String myHtml)
的{{1}}中的我使用'src'的内容来调用以下代码:
<img src=
所以我将src的内容替换为getImg函数返回的内容。