|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
|
Herramientas |
#21
|
||||
|
||||
Hola oxot, yo lo que necesito es enviar una imagen que tengo en un imageview definida en el xml.
|
|
#22
|
||||
|
||||
Para obtener la imagen necesitas esto:
Bitmap imagen= ((BitmapDrawable)imageView.getDrawable()).getBitma p(); Una vez que tienes la imagen necesitas almacenarla en un fichero para poder compartirla: try { FileOutputStream fichero = new FileOutputStream(ruta); imagen.compress(Bitmap.CompressFormat.PNG, 90, fichero); fichero.close(); } catch (Exception e) { } Ya lo único que te queda es usar el código que has puesto antes para el Send Intent poniendo la ruta del fichero. |
#23
|
||||
|
||||
Para obtener la imagen necesitas esto:
Bitmap imagen= ((BitmapDrawable)imageView.getDrawable()).getBitma p(); Una vez que tienes la imagen necesitas almacenarla en un fichero para poder compartirla: try { FileOutputStream fichero = new FileOutputStream(ruta); imagen.compress(Bitmap.CompressFormat.PNG, 90, fichero); fichero.close(); } catch (Exception e) { } Ya lo único que te queda es usar el código que has puesto antes para el Send Intent poniendo la ruta del fichero. ¿O es que la quiere dejar guardada para que se pueda abrir desde fuera de la aplicación? Saludos. |
#24
|
||||
|
||||
Pero, y digo desde mi desconocimiento, si la va a compartir desde su aplicación (con otra actividad o con otra app), ¿no la podría poner en un objeto en el Intent en lugar de guardar un fichero?
¿O es que la quiere dejar guardada para que se pueda abrir desde fuera de la aplicación? Saludos. Si ambas aplicaciones son tuyas ya puedes compartir en el Intent como te de la gana, porque sabes como la vas a enviar y sabes como la vas a recibir. El único requisito es que el objeto sea Parcelable o Serializable. Pero también te digo desde mi experiencia que si el objeto es muy grande (una foto de mucha calidad, que es lo que nos ocupa en este caso) la app destino va a petar en la mayoría de móviles, debido a que el sistema dedica un tiempo muy pequeño para pasar los Extras, y si ese tiempo se excede la Activity destino no se llega a abrir. |
Gracias de parte de: | ||
#25
|
||||
|
||||
Hola muchas gracias, ahora tengo una duda Kriogen, donde pones ruta, que la tengo que poner a mano la ruta? yo lo que quiero es que detecte la ruta de la imagen que se encuentra en el imageview.
|
#26
|
||||
|
||||
Esto es lo que tengo ahora mismo.
Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); //Intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + uri)); Bitmap imagen= ((BitmapDrawable)img.getDrawable()).getBitmap(); try { FileOutputStream fichero = new FileOutputStream(ruta); imagen.compress(Bitmap.CompressFormat.PNG, 90, fichero); fichero.close(); } catch (Exception e) { } intent.setType("Image/*"); startActivity(Intent.createChooser(intent,"Share Image" )); return true; |
#28
|
||||
|
||||
Hola de nuevo tengo puesto esto exactamente:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); //Intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + uri)); Bitmap imagen= ((BitmapDrawable)img.getDrawable()).getBitmap(); try { FileOutputStream fichero = new FileOutputStream("/sdcard/imagen.jpg"); imagen.compress(Bitmap.CompressFormat.JPEG, 90, fichero); fichero.close(); } catch (Exception e) { } intent.setType("Image/*"); startActivity(Intent.createChooser(intent,"Share Image" )); return true; Vale la he probado me aparece con que programa compartirla, selecciono gmail la envio pero no me adjunta la imagen me abre el correo vacio. |
#29
|
||||
|
||||
Descomenta el Intent.EXTRA_STREAM, y ponlo después del try {} catch.
Por último la variable uri debe coincidir con la ruta, es decir, ambas deben ser en este caso "/sdcard/imagen.jpg" |
#30
|
||||
|
||||
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND); uri= "sdcard/imagen.jpg"; Bitmap imagen= ((BitmapDrawable)img.getDrawable()).getBitmap(); try { FileOutputStream fichero = new FileOutputStream("/sdcard/imagen.jpg"); imagen.compress(Bitmap.CompressFormat.JPEG, 90, fichero); fichero.close(); } catch (Exception e) { Intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + uri)); } intent.setType("Image/*"); startActivity(Intent.createChooser(intent,"Share Image" )); return true; Asi lo he puesto pero me da error en la linea del EXTRA_STREAM |
#31
|
||||
|
||||
El EXTRA_STREAM va fuera del catch, precisamente se debe ejecutar si no se produce la excepción. De producirse la excepción debes terminar la función e impedir que se ejecute el startActivity.
Si te falla en esa línea es porque algo está mal al guardar el fichero. |
#32
|
||||
|
||||
Hola de nuevo, direis que soy una pesadilla, perdonarme.
Ya he conseguido que funcione el compartir, era una I del intent que estaba mayuscula en vez de minuscula. Ya lo que es la funcion de compartir lo hace, lo que no hace es guardar la imagen correctamente, es decir, me crea un jpg llamado imagen pero sin una imagen, es como un icono vacio, a ver si ves algun error a lo hora del activity, sobre la ruta que este algo mal puesto. Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); uri= "/sdcard/imagen.jpg"; Bitmap imagen= ((BitmapDrawable)img.getDrawable()).getBitmap(); try { FileOutputStream fichero = new FileOutputStream("/sdcard/imagen.jpg"); imagen.compress(Bitmap.CompressFormat.JPEG, 90, fichero); fichero.close(); } catch (Exception e) { } intent.putExtra(Intent.EXTRA_STREAM,Uri.parse("Fil e://" + uri)); intent.setType("Image/jpg"); startActivity(Intent.createChooser(intent,"Share Image" )); return true; Última edición por cepillo Día 18/11/13 a las 19:30:40. |
#33
|
||||
|
||||
a ver si me echais una mano
|
#34
|
||||
|
||||
Acerca de lo de grabar la imagen no te puedo ayudar, nunca lo he hecho, pero te puedo recomendar que NUNCA uses rutas absolutas ("/sdcard/imagen.jpg"), pues eso puede cambiar. Usa, en su lugar, Environment.getExternalStorage()
__________________
Por favor, cita este mensaje o mencióname si necesitas que responda, así me saltará en Tapatalk
|
#35
|
||||
|
||||
usando eviroment. no me deja me sale error en la linea intent.putExtra(Intent.EXTRA_STREAM,Uri.parse("Fil e://" + Uri));
CODIGO me estoy volviendo loco x esta chorradita Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); File Uri = Environment.getExternalStorageDirectory(); Bitmap imagen= ((BitmapDrawable)img.getDrawable()).getBitmap(); try { FileOutputStream fichero = new FileOutputStream(Environment.getExternalStorageDir ectory()); imagen.compress(Bitmap.CompressFormat.JPEG, 90, fichero); fichero.close(); } catch (Exception e) { } intent.putExtra(Intent.EXTRA_STREAM,Uri.parse("Fil e://" + Uri)); intent.setType("Image/jpg"); startActivity(Intent.createChooser(intent,"Share Image" )); return true; |
#36
|
||||
|
||||
He comprobado que la imagen me la crea en la sdcar pero no me la envia, tengo puesto
ima="/sdcard/imagen.jpg"; intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/" + ima); Ya no tiene que quedar nada para que salga jajaj. a ver si me ayudais gracias ante todo |
#37
|
||||
|
||||
Ya esta realizado, esta parte.
|
#38
|
||||
|
||||
No tengo la libreria appcompat v7 en la carpeta extras android support .... correspondiente, como puedo adquirirla tengo todo lo de adk instalado
|
Estás aquí | ||||||
|