Home Menu

Menu



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
  #1  
Viejo 06/02/14, 11:31:23
Avatar de sadelta
sadelta sadelta no está en línea
Miembro del foro
Mensajes: 100
 
Fecha de registro: dic 2010
Mensajes: 100
Versión de ROM: Froyo 2.2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de sadelta
sadelta sadelta no está en línea
Miembro del foro
Mensajes: 100
 
Fecha de registro: dic 2010
Mensajes: 100
Versión de ROM: Froyo 2.2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Muchas gracias kriogeN probare tu ejemplo haver que tal resulta.
Responder Con Cita
  #4  
Viejo 06/02/14, 16:50:26
Avatar de sadelta
sadelta sadelta no está en línea
Miembro del foro
Mensajes: 100
 
Fecha de registro: dic 2010
Mensajes: 100
Versión de ROM: Froyo 2.2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de jtsamper
jtsamper jtsamper no está en línea
Miembro del foro
Mensajes: 149
 
Fecha de registro: abr 2013
Localización: Madrid
Mensajes: 149
Modelo de smartphone: Xperia Arc, Nexus 5
Versión de ROM: 4.0.4, 4.4
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #6  
Viejo 06/02/14, 19:55:01
Avatar de sadelta
sadelta sadelta no está en línea
Miembro del foro
Mensajes: 100
 
Fecha de registro: dic 2010
Mensajes: 100
Versión de ROM: Froyo 2.2
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de LFRCORP
LFRCORP LFRCORP no está en línea
Usuario poco activo
Mensajes: 1
 
Fecha de registro: abr 2015
Mensajes: 1
Modelo de smartphone: Motorola G
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 18:06:26 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007