Как получить Galley Thumbnail для определенной папки с изображениями в Android? - PullRequest
5 голосов
/ 11 января 2011

У меня есть некоторые сохраненные изображения в папке «Изображения» на SD-карте. Я хочу получить доступ к этим изображениям моей папки напрямую.

Я использовал приведенный ниже код для непосредственного выбора изображений в галерее.

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setDataAndType(Uri.parse("file:///sdcard/Pictures/"), "image/*");

startActivityForResult(intent, 1);

Приведенный выше код получает все изображения с SD-карты. Но мне нужна только моя папка с изображениями. Я также попробовал Intent.ACTION_GET_CONTENT, тот же результат.

Пожалуйста, кто-нибудь поправьте меня ...

Спасибо.

1 Ответ

0 голосов
/ 24 мая 2011

Это код, который я использую для выбора картинки с SD-карты

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),JobActivity.SELECT_PHOTO);

Обратите внимание, это загружает корневую папку.

После выбора фотографии вызывается метод onActivityResult, и изображение можно получить.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    try {
        if (resultCode == RESULT_OK) {
            if (requestCode == JobActivity.SELECT_PHOTO) {
                Uri selectedImageUri = data.getData();
                String selectedImagePath = getPath(selectedImageUri);
                getBitmap(selectedImagePath, 0);
                // Log.d("Debug","Saved...." + selectedImagePath);
            }
        }
    } catch (Exception e) {
        Log.e("Error", "Unable to set thumbnail", e);
    }
}

Метод get Path

public String getPath(Uri uri) {

    Cursor cursor = null;
    int column_index = 0;
    try {
        String[] projection = { MediaStore.Images.Media.DATA };
        cursor = managedQuery(uri, projection, null, null, null);
        column_index = cursor
        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
    } catch (Exception e) {
        Log.d("Error", "Exception Occured", e);

    }

    return cursor.getString(column_index);
}

И, наконец, получить растровое изображение

public Bitmap getBitmap(String path, int size) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = size;
    Bitmap bitmap = BitmapFactory.decodeFile(path, options);
    return bitmap;
}

Переменная размера позволяет масштабировать изображение с коэффициентом. Если вы не хотите масштабировать, просто удалите параметр options.

Я не уверен, как заставить его выбирать из другой папки, кроме root.

Вот также полезный пост Получить / выбрать изображение из встроенного в Android приложения "Галерея" программно

...