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
  #1  
Viejo 06/02/14, 11:31:23
Array

[xs_avatar]
sadelta sadelta no está en línea
Miembro del foro
 
Fecha de registro: dic 2010
Mensajes: 100
Tu operador: Orange

Problema con intent para compartir imagenes

Hola soy novato en programación estudio java y android, y estoy haciendo un pequeño programa es un visor de fotos, compuesto por unas cuantas imágenes y tres botones,
derecha izquierda y compartir.
Bien el problema es el boton compartir tengo las imágenes en un array

las imágenes se visualizan en un imageView,y las tengo listadas en un array, y aquí viene el problema como llamo a la imagen que esta en ese momento en el imageView.
hay ejemplos que dicen como compartir una imagen pero desde un directorio en concreto y una imagen en concreto y eso no me sirve, otra cosa e visto que hay que poner una Uri y no se que poner

ImageView foto;
int[] fotoId = {R.drawable.rajo,R.drawable.f1,
R.drawable.f2,R.drawable.f3,
R.drawable.f4,R.drawable.f5};
int i = 0;
int total;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/////////////////////////////////////
Button derecha = (Button)findViewById(R.id.btnDe);
Button izquierda = (Button)findViewById(R.id.btnIz);
Button compartir = (Button)findViewById(R.id.btnCom);

derecha.setOnClickListener(this);
izquierda.setOnClickListener(this);
compartir.setOnClickListener(this);

foto = (ImageView) findViewById(R.id.imageView1);
total = fotoId.length;

// Esta es la parte donde estoy atascado
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND); //esto es la accion enviar
shareIntent.putExtra(Intent.EXTRA_STREAM,uri);//aqui no se cual es la uri
shareIntent.setType("image/jpeg"); //esto es es tipo que quiero compartir
startActivity(Intent.createChooser(shareIntent, (CharSequence) getResources()))


Os agradecería que echarais una mano a este novato, gracias
Responder Con Cita


  #2  
Viejo 06/02/14, 14:13:21
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
Tienes que coger la imagen que tienes en el ImageView, convertirla a Bitmap, guardarla en disco y luego usar la ruta como URI, por partes:

Bitmap imagen = ((BitmapDrawable) foto.getDrawable()).getBitmap();
FileOutputStream fichero = new FileOutputStream(Environment.getExternalStorageDir ectory() + "/imagen.jpg");
imagen.compress(Bitmap.CompressFormat.JPEG, 80, fichero);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory( ) + "/imagen.jpg");

Ahora sobre el código de arriba, tendrás que poner IOException en algunos sitios y en la línea del "Uri.parse...." en algunas aplicaciones con las que compartas con algunos móviles te fallará, es debido a que algunas aplicaciones requieren que la Uri tenga "file://" al principio (otras no es necesario), por ejemplo creo que con Facebook no hace falta y con WhatsApp si, o al revés, ahora mismo no lo recuerdo bien lo hice hace algunos meses. Y en algunos móviles el Environment.getExternalStorageDirectory() incluye el "file://" y en otros no.

Yo al final lo solucioné comparando si Environment.getExternalStorageDirectory() no comenzaba con "file://", y en ese caso lo añado por delante, y si lo incluye no añado nada.
Responder Con Cita
  #3  
Viejo 06/02/14, 14:45:40
Array

[xs_avatar]
sadelta sadelta no está en línea
Miembro del foro
 
Fecha de registro: dic 2010
Mensajes: 100
Tu operador: Orange

Muchas gracias kriogeN probare tu ejemplo haver que tal resulta.
Responder Con Cita
  #4  
Viejo 06/02/14, 16:50:26
Array

[xs_avatar]
sadelta sadelta no está en línea
Miembro del foro
 
Fecha de registro: dic 2010
Mensajes: 100
Tu operador: Orange

Pues sigo igual que estaba no me envia la foto que esta en ese momento en el visor


Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");

share.putExtra(Intent.EXTRA_STREAM,
Uri.parse("android.resource://com.std.pruebashare/drawable/" + Integer.toString(R.drawable.f1)));


startActivity(Intent.createChooser(share, "Share Image"));

este codigo funciona pero esta limitado a la imagen que tu le digas, por eso tampoco me sirve, tiene que ser la que este visualizandose en ese momento en el imageview ,
gracias de todas formas
Responder Con Cita
  #5  
Viejo 06/02/14, 19:34:37
Array

[xs_avatar]
jtsamper jtsamper no está en línea
Miembro del foro
 
Fecha de registro: abr 2013
Localización: Madrid
Mensajes: 149
Modelo de smartphone: Xperia Arc, Nexus 5
Tu operador: Movistar
Supongo que usaras
Código:
int i = 0;
para saber la posicion de ese array de int[] no??

pues
Código:
Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("image/*");
        share.putExtra(Intent.EXTRA_STREAM,
        Uri.parse("android.resource://com.std.pruebashare/drawable/" + Integer.toString( fotoId[i] )));
        startActivity(Intent.createChooser(share, "Share Image"));
Esto deberia enviarte la foto que tienes en ese momento.

Espero que te sirva
__________________
Controlador de Medicamentos 1.5 (https://play.google.com/store/apps/d...mentcontrolled)
Legislación Basica Española 1.1 (https://play.google.com/store/apps/d...islacionbasica)
Responder Con Cita
  #6  
Viejo 06/02/14, 19:55:01
Array

[xs_avatar]
sadelta sadelta no está en línea
Miembro del foro
 
Fecha de registro: dic 2010
Mensajes: 100
Tu operador: Orange

muchas gracias jtsamper es lo que estaba buscando, llevo poco estudiando java, 3 meses y 2 semanas en android ósea me queda muchísimo que estudiar,
bueno gracias de nuevo , aun me queda mucho que aprender.



Nota: comparte las fotos bien, menos en facebook que no la envia alguna idea.

Última edición por sadelta Día 06/02/14 a las 20:11:06.
Responder Con Cita
  #7  
Viejo 14/04/15, 02:20:06
Array

[xs_avatar]
LFRCORP LFRCORP no está en línea
Usuario poco activo
 
Fecha de registro: abr 2015
Mensajes: 1
Modelo de smartphone: Motorola G
Tu operador: Movistar
Buen día Sadelta.

Podrías compartirme tu código final por favor es que estoy buscando algo muy similar a lo que tu has logrado programar, no dudando de tu invaluable apoyo de antemano; Gracias.

Saludos cordiales...

http://luisfloresr.blogspot.mx
Responder Con Cita
Respuesta

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



Hora actual: 08:15:40 (GMT +2)



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

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