estoy empezando una solicitud de selección de imagen:Android - del selector de imágenes, Imagen incorrecto
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Choose"), PHOTO_GALLERY);
Y conseguir los datos de nuevo en onActivityResult
:
if(resultCode == Activity.RESULT_OK && requestCode == PHOTO_GALLERY)
{
U.log(data.getData());
Bitmap bm = ... // built from the getData() Uri
this.postImagePreview.setImageBitmap(bm);
}
Cuando inicio la intención, me vea algunas carpetas, como sdcard
, Drop Box
, MyCameraApp
, y así sucesivamente.
Si selecciono una imagen de sdcard
, cuando cargo la vista previa, es una imagen completamente incorrecta. Las otras carpetas no parecen darme este problema.
¿Alguien sabe por qué me deja elegir una imagen, y luego darme el Uri por otra?
EDIT: Éstos son algunos exampled conectado getData()
s:
Buenas:
content://com.google.android.gallery3d.provider/picasa/item/5668377679792530210
malo:
content://media/external/images/media/28
EDIT: Estoy ITS Tendremos problemas al elegir desde la carpeta sdcard de la galería.
Aquí es un poco más la expansión de lo que estoy haciendo en onActivityResult:
// cursor
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = mContext.getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
// Cursor: /mnt/sdcard/Pic.jpg : /mnt/sdcard/Pic.jpg
U.log("Cursor: " + filePath + " : " + Uri.parse(filePath));
// "regular"
// Regular: content://media/external/images/media/28 : content://media/external/images/media/28
U.log("Regular: " + data.getDataString() + " : " + Uri.parse(data.getDataString()));
// Regular 2: content://media/external/images/media/28 : content://media/external/images/media/28
U.log("Regular 2: " + data.getData() + " : " + data.getData());
mPostImagePreview.setImageBitmap(BitmapFactory.decodeFile(filePath));
mPostImagePreview.setVisibility(View.VISIBLE);
Todavía establecer la imagen equivocada. Si entro en la Galería, pulse durante mucho tiempo la imagen y ver sus detalles me sale:
TItle: Pic
Time: May 2, 2012
Width: 720
Height: 1280
Orientation: 0
File size: 757KB
Maker: Abso Camera
Model: Inspire 4G
Path: /mnt/sdcard/Pic.jpg
Así, la galería me está diciendo que el camino es la misma que la accion de captura, y la galería está prestando correctamente . Entonces, ¿por qué no está procesando si lo configuro desde onActivityResult?
Además, este es el código que estoy usando para disparar el Intento ahora:
private void selectPhoto()
{
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
((Activity)mContext).startActivityForResult(Intent.createChooser(intent, "Select Picture"), PHOTO_GALLERY);
}
¿Este comportamiento es aleatorio? Quiero decir, ¿hay algún patrón que veas cuando repites la selección de imágenes ...? – Ronnie
tal vez las miniaturas en la galería son incorrectas. esto puede suceder si, por ejemplo, las imágenes se eliminan porque Android vuelve a utilizar los identificadores de imagen. – uwe
@ userSeven7s: Siempre cuando selecciono de la carpeta sdcard de la aplicación Galería. – Josh