Фотоальбомы и приложение Dropbox
Вот как я запускаю намерение получить фото из фотоальбомов
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, SELECT_PICTURE);
затем из результата я беру путь от
Uri selectedImageUri = data.getData();
public String getPath(Uri selectedImageUri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
выбранного изображения и поместите это изображение в SDCard.
Но так как приложение dropbox также установлено, то оно также появляется, и когда я выбираю изображение, то Uri приходит как
Файл:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/FloorPlanImage/7th_floor_new.jpg
и теперь, когда я пытаюсь получить getPath, происходит сбой. Можете ли вы сказать мне, как это исправить, чтобы я мог взять путь изображения и сохранить его в SDCard?
2 ответа
Ну, я понял, в чем проблема
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
ничего не возвращает, так как изображение было выбрано из Dropbox, а не из фотогалереи Android.
Поэтому я использовал Uri, когда изображение выбрано, и использовал его, чтобы установить ImageView, и он работал отлично.
Спасибо!!
Используйте следующий код, это работает идеально для меня
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Upload photo"),
RESULT_LOAD_IMAGE);
В 'onActivityResult' напишите следующий код
protected void onActivityResult(final int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
&& null != data) {
Uri selectedImage = data.getData();
imageView.setImageURI(selectedImage);
} else
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}