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

Respuesta
 
Herramientas
  #21  
Viejo 14/11/13, 21:02:54
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

Hola oxot, yo lo que necesito es enviar una imagen que tengo en un imageview definida en el xml.
Responder Con Cita


  #22  
Viejo 14/11/13, 23:45:30
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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.
Responder Con Cita
  #23  
Viejo 15/11/13, 12:14:01
Array

[xs_avatar]
oxot oxot no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Tu operador: Pepephone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
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.
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.
Responder Con Cita
  #24  
Viejo 15/11/13, 13:35:48
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por oxot Ver Mensaje
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.
Es que para compartir con una aplicación externa que acepte el ACTION_SEND con EXTRA_STREAM. El EXTRA_STREAM debe ser una URI, es decir, una ruta, bien una ruta de Internet o una ruta local. En el caso de ser una ruta de Internet el único requisito es que la otra aplicación tenga permisos de Internet, en el caso de ser una ruta local el único requisito es que esté en una ruta pública, para que ambas aplicaciones puedan acceder a esa ruta.

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.
Responder Con Cita
Gracias de parte de:
  #25  
Viejo 16/11/13, 21:46:49
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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.
Responder Con Cita
  #26  
Viejo 16/11/13, 21:50:31
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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;
Responder Con Cita
  #27  
Viejo 16/11/13, 22:27:44
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Ruta es el lugar donde quieras guardar la imagen, por ejemplo "/sdcard/imagen.jpg"
Responder Con Cita
  #28  
Viejo 18/11/13, 17:15:39
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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.
Responder Con Cita
  #29  
Viejo 18/11/13, 17:22:50
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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"
Responder Con Cita
  #30  
Viejo 18/11/13, 17:52:13
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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
Responder Con Cita
  #31  
Viejo 18/11/13, 18:28:59
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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.
Responder Con Cita
  #32  
Viejo 18/11/13, 18:57:55
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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.
Responder Con Cita
  #33  
Viejo 19/11/13, 16:40:58
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

a ver si me echais una mano
Responder Con Cita
  #34  
Viejo 19/11/13, 16:45:13
Array

[xs_avatar]
vagaerg vagaerg no está en línea
Usuario muy activo
 
Fecha de registro: ago 2009
Localización: Londres
Mensajes: 1,541
Modelo de smartphone: Galaxy Note 10+ 512GB
Tu operador: Otra
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
Responder Con Cita
  #35  
Viejo 19/11/13, 17:37:30
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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;
Responder Con Cita
  #36  
Viejo 20/11/13, 13:22:28
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

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
Responder Con Cita
  #37  
Viejo 20/11/13, 22:06:30
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

Ya esta realizado, esta parte.
Responder Con Cita
  #38  
Viejo 21/11/13, 20:23:05
Array

[xs_avatar]
cepillo cepillo no está en línea
Usuario poco activo
 
Fecha de registro: ago 2011
Mensajes: 49
Tu operador: Movistar

No tengo la libreria appcompat v7 en la carpeta extras android support .... correspondiente, como puedo adquirirla tengo todo lo de adk instalado
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 14:33:19 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /