2010-08-31 19 views
2

comment puis-je montrer des images dans WebView sans enregistrer les images dans le système de fichiers?android - montrer des images dans le webView qui ne sont pas dans le système de fichiers

J'ai essayé d'implémenter mon ContentProvider personnalisé, mais la méthode openFile renvoie ParcelFileDescriptor qui pointe dans le système de fichiers (ou socket). Mes images sont dans le système de fichiers, mais sous forme cryptée.

J'ai essayé aussi URL.setURLStreamHandlerFactory, mais dans Java Android il est inutile (parce que streamHandler personnalisé peut être enregistré en jvm qui n'est pas autorisé).

J'essaie également le code html "img src = \" data: image.gif; base64, R0lGODlhiAAkAMQAANOOk ... ", mais en chrome intégré il ne fonctionne pas :(

pls aider

Répondre

1

Il y a un bogue dans Android, vous ne pouvez pas charger des images avec la base 64 sur une WebView comme ça (ur dernière approche) ...

http://code.google.com/p/android/issues/detail?id=596

Vérifiez ce lien sur peut-être vous pouvez essayer cette approche de l'utilisation de fournisseurs de contenu

http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html

http://www.techjini.com/blog/2009/01/10/android-tip-1-contentprovider-accessing-local-file-system-from-webview-showing-image-in-webview-using-content/

ou

http://downloadandroid.info/2010/07/how-to-display-an-image-from-the-sdcard-in-webview/

+0

merci beaucoup, le premier lien fonctionne. Génial. – Peter

+3

J'ai une erreur dans le code html: img src = "données: image.gif; base64, R0lGODlhiAAkAMQAANOOk ... correcte est (faute de frappe dans mimetype): img src =" data: image/gif; base64 , R0lGODlhiAAkAMQAANOOk ... – Peter

1

Le premier lien montre comment cela se fait à l'aide du système de fichiers, et ne semble pas résoudre le problème décrit par Peter. D'après ce que j'ai vu, la seule façon de ce résol est en utilisant un MemoryFile:

Custom ContentProvider - openInputStream(), openOutputStream()

mais les spécifications ne sont pas définitives et il n'est pas mis en œuvre sur tous les systèmes.

Avez-vous trouvé un meilleur moyen? Y a-t-il un moyen de le faire? Existe-t-il un moyen de lire un curseur à partir d'un webview?