¿Cómo mostrar imágenes con datos de carga de WebView?

Tengo lo siguiente

String urlStr = "http://example.com/my.jpg" String mimeType = "image/jpeg"; String encoding = null; String pageData = ""; // This is data read in from an HttpURLConnection webview.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr); 

pero cuando ejecuto esto, todo lo que veo es un signo de interrogación azul en lugar de mi imagen. ¿Cuál es la forma correcta de manejar la visualización de una imagen en un WebView con loadData?

Editar: ¿Hay alguna forma de hacerlo sin pasar pageData como ? Parece una tontería que loadData tome un tipo mime si solo puede manejar “text / html”. Especialmente porque el javadoc enumera “image / jpeg” como un ejemplo de tipo MIME que puede pasar.

Es posible incrustar los datos de imagen codificados en base64 directamente en la :

   

Aquí un ejemplo para crear la -tag (utilizo una matriz de bytes en lugar de la cadena para datos brutos, porque en mis pruebas una cadena como fuente no funcionó), supongo que la cadena no puede manejar datos binarios )

  byte[] imageRaw = yourImage; String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT); String pageData = ""; 

La clase Base64 se introdujo con API v.2.2. Para versiones anteriores de API puede copiar el archivo de origen de git e integrarlo en su aplicación. Debería funcionar con versiones API más antiguas.

O puede usar una de las clases alternativas para encoding base64 como Base64Coder .


Y aquí el código de trabajo completo para recuperar, convertir y mostrar la imagen:

  byte[] imageRaw = null; try { URL url = new URL("http://some.domain.tld/somePicture.jpg"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); ByteArrayOutputStream out = new ByteArrayOutputStream(); int c; while ((c = in.read()) != -1) { out.write(c); } out.flush(); imageRaw = out.toByteArray(); urlConnection.disconnect(); in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT); String urlStr = "http://example.com/my.jpg"; String mimeType = "text/html"; String encoding = null; String pageData = ""; WebView wv; wv = (WebView) findViewById(R.id.webview); wv.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr); 
  Use this.. solve the problem of images load in webview. WebView webView = (WebView)findViewById(R.id.webView1); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setJavaScriptEnabled(true); String url ="Path of image"; String imgSrcHtml = ""; webView.loadData(imgSrcHtml, "text/html", "UTF-8");