Spanish [SOLUCIONADO] Compartir un fichero PNG/JPG por internet.

droman

Member
Licensed User
Hola.

Llevo ya dos días dandome cabezazos contra la mesa... no soy capaz de mandar un fichero png desde mi aplicación. Actualmente estoy usando la librería MESSShareLibrary, pero cuando escojo Whatsapp y le digo compartir con un contacto, me dice que el fichero está vacio. He comprobado el fichero, que está en Dir.DirRootExternal y se ve perfectamente desde el administrador de ficheros y se abre sin problemas, sin embargo, desde cualquier programa para compartir, Facebook, Whatsapp, Gmail... siempre me dice que está vacio.

Éste es parte del código que uso para grabar el PNG y para enviarlo.

Para Grabar:
B4X:
...
    Out = File.OpenOutput(File.DirRootExternal, dt & ".png", False)
    bmp.WriteToStream(Out, 100, "PNG")
    Out.Close
...

Para enviar:

B4X:
     share.sharebinary("file://" & File.DirRootExternal & dt & ".png", "image/png","Ejemplo", "Enviado desde XXXX")

¿Se os ocurre que puede estar fallando? He probado con "file://" y "file:///" y "file:/" y nada.
 

Descartex

Well-Known Member
Licensed User
En la aplicacion que tengo que utiliza esa libreria lo hago de esta forma:
B4X:
File.Exists(File.DirRootExternal,"Test2.png") Then
Dim share As MESShareLibrary
share.sharebinary("file://" & File.DirRootExternal & "/Test2.png", "image/png", LangMap.Get("Message"),"Mensaje personalizado")
Tal vez te falte un "/" entre el directorio y el nombre del fichero... con File.Combine lo tendrías arreglado.
Un saludo.
 

droman

Member
Licensed User
En la aplicacion que tengo que utiliza esa libreria lo hago de esta forma:
B4X:
File.Exists(File.DirRootExternal,"Test2.png") Then
Dim share As MESShareLibrary
share.sharebinary("file://" & File.DirRootExternal & "/Test2.png", "image/png", LangMap.Get("Message"),"Mensaje personalizado")
Tal vez te falte un "/" entre el directorio y el nombre del fichero... con File.Combine lo tendrías arreglado.
Un saludo.

Pues lo he probado también y al hacer un Log veo un nombre de fichero correctamente formateado, aún así... voy a volverlo a intentar.
Gracias Descartex


EDITO: Me funciona, el problema parece ser, efectivamente como decías, tengo que poner el / antes del nombre de fichero, lo que me extraña es que en el Log... aparece correctamente... ¿es necesario duplicarlo como si fuese el \\ de 'c'?

De todas formas, muchas gracias Descartex!
 
Last edited:

Descartex

Well-Known Member
Licensed User
EDITO: Me funciona, el problema parece ser, efectivamente como decías, tengo que poner el / antes del nombre de fichero, lo que me extraña es que en el Log... aparece correctamente... ¿es necesario duplicarlo como si fuese el \\ de 'c'?
No, el problema es que File.DirRootExternal te devuelve la ruta sin el ultimo / y al hacerle "a pelo" el concatenar el nombre del fichero, pues le falta... eso es lo que añade automaticamente el File.Combine.

Me he tirado en su día 3 dias parado con esa pijada... asi q no me digas nada :p
 
Top