Android:从webview读取图像,将图像写入webview

时间:2013-05-07 13:50:59

标签: android html image webview

我将恢复我在网上找到的一些提示来解决我的问题。

我有一些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文件)。

那么:如何'传输'图像?

1 个答案:

答案 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函数返回的内容。