2011-03-19 21 views
5

Tengo una aplicación de envío de Android que muestra ocasionales páginas web estáticas que se incluyen en la carpeta de activos. He estado que muestran estas programación como:android_asset no funciona en Honeycomb?

webView = new WebView(PKBDocument.KnowledgeBook.KBContext); 
setContentView(webView); 
webView.loadUrl("file:///android_asset/path/to the/file.html"); 

Esto funciona bien para los niveles de la API 3 - 9. Hace poco recibí mi nuevo y brillante Xoom y tratado de ejecutar la misma aplicación, y me da un error

The webpage at file:///android_asset/path/to%20the/file.html might be temporarily down or it may have moved permanently to a new web address

Entonces, comencé a experimentar. El emulador Honeycomb muestra estas páginas muy bien, pero mi dispositivo honeycomb actual (ejecutando 3.0.1) muestra este error de manera consistente. Puedo leer la página web con AssetManager y luego mostrarla usando loadDataWithBaseURL(), pero luego los enlaces de imagen en la página web no se cargan (presumiblemente porque no puede encontrar la ruta al archivo de imagen).

¿Alguna idea de qué cambió y cómo manejar esto?

Respuesta

6

Intenta eliminar el espacio. This project y this project ambos funcionan bien en mi XOOM.

+0

Efectivamente, el espacio fue el problema - extraño que parece estar perfectamente bien en todas las ediciones anteriores del SDK. Ah, bueno ... gracias por la ayuda! –

+0

@Jeff Hay: Bueno, es probable que sea una regresión, aunque puede ser una regresión para volver a un estándar. Tomé una conjetura educada sobre el espacio porque su 'file: /// android_asset/path/to the/file.html' no es una URL válida con el espacio. Podría intentar escanear manualmente URL a% 20 y ver si eso ayuda, nunca lo he intentado. – CommonsWare

+2

Sí, en realidad había intentado escanear manualmente a% 20 antes de publicar la pregunta, así como ejecutarlo a través de URLEncoder, ninguno de los cuales funcionó. Gracias por la ayuda. –

4

Para mí, el problema fue que compilé con maven. Con maven tus activos deberían ir al src/main/resources/assets y los tuve en src/main/resources - lo que aparentemente está mal.

Parece que Honeycomb es más estricto al respecto. Si no se utiliza Maven a continuación, hacer una lista de los archivos en el archivo apk (es tan archivo zip) y comprobar que sus activos registrado correctamente dentro del directorio activo:

7z l target/*.jar 

7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 
p7zip Version 9.20 (locale=utf8,Utf16=on,HugeFiles=on,8 CPUs) 

Listing archive: target/HP45-Droid-5.0.0.jar 

-- 
Path = target/HP45-Droid-5.0.0.jar 
Type = zip 
Physical Size = 465392 

    Date  Time Attr   Size Compressed Name 
------------------- ----- ------------ ------------ ------------------------ 
2012-01-01 19:07:10 D....   0   0 META-INF 
2012-01-01 19:07:08 .....   125   102 META-INF/MANIFEST.MF 
2012-01-01 19:07:06 D....   0   0 assets 
2012-01-01 19:07:06 .....  93692  93629 assets/45bk.jpg 
2012-01-01 19:07:06 .....   3467   1408 assets/help.html 
+0

+1 Para la respuesta de estilo 'enseñar al desarrollador a pescar'. Nunca pensé simplemente en abrir el apk y mirar adentro antes. Nota para los desarrolladores de Windows: no pude abrir la aplicación como un archivo zip con el extractor de Windows predeterminado, incluso después de cambiar la extensión a .zip. Sin embargo, descargué el antiguo y seguro 7-zip y no tuve problemas para mostrarme los archivos. –

Cuestiones relacionadas