Pregunta

Tengo un WebView que estoy usando para abrir algunos archivos almacenados en el directorio assets/ de mi proyecto. Funciona bien para la mayoría de los archivos, pero hay uno en particular (y estoy seguro de que otros no lo he encontrado) que acaba de no abierta.

El archivo que estoy teniendo problemas con lleva el nombre:

"assets/ContentRoot/Photos/XXX Software Logo - jpg - 75%.JPG"

Cuando paso a WebView, y se nota la página de error, se muestra como:

"file:///android_asset/ContentRoot/Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%.JPG"

luego trató URLEncoder.encode() se ejecutan en él y tengo la página de error con la URL presentada como:

"file:///android_asset/ContentRoot/Photos/XXX+Software+Logo+-+jpg+-+75%.JPG"

Ninguna de estas URL fueron capaces de abrir el archivo (y ambos se ven bien para mí). Alguien tiene alguna idea?

ACTUALIZACIÓN: Si puedo codificar el % a mano (usando %25, como sugirió commonsware.com), entonces se carga la imagen, sino que trata de analizar como texto, no como una imagen, por lo Acabo de obtener un montón de basura (básicamente).

Alojado por imgur.com

Además, en referencia a la imagen en un documento HTML con una dirección URL relativa no está funcionando (probablemente porque no está siendo interpretado como una imagen?):

<img src="../Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%.JPG" />
<img src="../Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%25.JPG" />
¿Fue útil?

Solución

De acuerdo, después de pasar demasiado tiempo en esto, he descubierto lo que está pasando. Básicamente, si las imágenes almacenadas en el directorio assets/ contienen un espacio (por ejemplo, " ") en su nombre de archivo, no van a representar como imágenes.

myWebView.loadUrl("file:///android_asset/testimage.jpg");

funciona bien. Sin embargo,

myWebView.loadUrl("file:///android_asset/test+image.jpg");

simplemente genera un error que no se encuentra y

myWebView.loadUrl("file:///android_asset/test image.jpg");
// and
myWebView.loadUrl("file:///android_asset/test%20image.jpg");

mostrar que aparece incorrectamente (como texto ... ver captura de pantalla en cuestión).

Este comportamiento inesperado está presente en (al menos) 1.5, 1.6, y 2.0 y I presentó un informe de error .

Otros consejos

Trate de deshacerse de la % en el nombre de archivo. O, escapar de ella como %25.

Me imagino que sólo entiende WebView tipos de contenidos relacionados con el texto por lo que el tratamiento con fidelidad su JPG como la codificación base64, decodifica y muestra como resultado engullir-pegote como texto. Realmente no sé si es posible establecer el tipo de contenido para WebView sino como solución alternativa se puede tratar de tirar etiqueta img dentro de etiquetas HTML y la página resultet carga. También es probable que sólo puede utilizar WebView # loadDataWithBaseUrl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top