Фотоальбомы и приложение 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);

        }
}
Другие вопросы по тегам