Получение изображений определенных папок в каталоге с помощью загрузчика курсора

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

код: onCreateLoader метод:

 @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        String[] projection = {MediaStore.Files.FileColumns._ID,
                MediaStore.Files.FileColumns.DATE_ADDED,
                MediaStore.Files.FileColumns.MEDIA_TYPE
        };
        String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                    + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE;

        return new CursorLoader(getContext(), MediaStore.Files.getContentUri("external"), projection, selection, null,
                MediaStore.Files.FileColumns.DATE_ADDED + " ASC");
    }

person Harmeet Kaur    schedule 03.11.2016    source источник


Ответы (2)


Я пытаюсь получить изображения из определенной папки с SD-карты

Передайте имя каталога как selectionArgs и измените строку выбора как:

 String selection = MediaStore.Images.Media.DATA + " like ? ";
 String selectionArgs =new String[] {"%PASS_DIR_NAME_HERE%"};

 new CursorLoader(getContext(),MediaStore.Files.getContentUri("external"), 
                 projection, 
                 selection, 
                 selectionArgs,
                 MediaStore.Files.FileColumns.DATE_ADDED + " ASC");
person ρяσѕρєя K    schedule 03.11.2016
comment
спасибо за вашу помощь, но если я хочу получить его из подпапки из каталога - person Harmeet Kaur; 07.11.2016
comment
@HarmeetKaur: попробуйте, передав имя подпапки как PASS_DIR_NAME_HERE - person ρяσѕρєя K; 07.11.2016

Вы можете напрямую создавать растровые изображения из decodeFile (String pathName), что даст вам объект Bitmap, который можно установить в ImageView.

File path = new File(Environment.getExternalStorageDirectory(),"iWallet/Images");
if(path.exists())
{
    String[] fileNames = path.list();
}
for(int i = 0; i < filename.length; i++)
{
     Bitmap mBitmap = Bitmap.decodeFile(path.getPath()+"/"+ fileNames[i]);
     ///Now set this bitmap on imageview
} 
person LoveAndroid    schedule 03.11.2016