Получить путь MediaStore к определенной папке

Я создаю обновление для своего приложения, в нем у меня есть папка с сохраненными изображениями, которую я хотел бы отображать в GridView. Я уже использую библиотеку Ion . У создателя библиотеки (Koush Dutta) уже есть образец, который делает то, что я хочу, и отображает все изображения с SD-карты в GridView. ,

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

Моя проблема в том, что я не могу получить только изображения с SD-карты в GridView, в настоящее время он получает все изображения с SD-карты. Я хочу только из папки / sdcard / Comics /

Код

public class SavedComics extends Activity { private MyAdapter mAdapter; // Adapter to populate and imageview from an url contained in the array adapter private class MyAdapter extends ArrayAdapter<String> { public MyAdapter(Context context) { super(context, 0); } @Override public View getView(int position, View convertView, ViewGroup parent) { // see if we need to load more to get 40, otherwise populate the adapter if (position > getCount() - 4) loadMore(); if (convertView == null) convertView = getLayoutInflater().inflate(R.layout.image, null); // find the image view final ImageView iv = (ImageView) convertView.findViewById(R.id.comic); // select the image view Ion.with(iv) .centerCrop() .error(R.drawable.error) .load(getItem(position)); return convertView; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gallery); int cols = getResources().getDisplayMetrics().widthPixels / getResources().getDisplayMetrics().densityDpi * 2; GridView view = (GridView) findViewById(R.id.results); view.setNumColumns(cols); mAdapter = new MyAdapter(this); view.setAdapter(mAdapter); loadMore(); } Cursor mediaCursor; public void loadMore() { if (mediaCursor == null) { mediaCursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), null, null, null, null); } int loaded = 0; while (mediaCursor.moveToNext() && loaded < 10) { // get the media type. ion can show images for both regular images AND video. int mediaType = mediaCursor.getInt(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.MEDIA_TYPE)); if (mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE && mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO) { continue; } loaded++; String uri = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA)); File file = new File(uri); // turn this into a file uri if necessary/possible if (file.exists()) mAdapter.add(file.toURI().toString()); else mAdapter.add(uri); } } } 

Я пробовал несколько вещей, один из них был таким, как этот ответ :

 getContentResolver().query( uri1, Selection, android.provider.MediaStore.Audio.Media.DATA + " like ? ", new String[] {str}, null); 

Я просто понял это с помощью этого ответа .

Оказывается, все, что вам нужно сделать, это использовать этот код ниже, чтобы получить курсор, и он будет загружать только изображения из /sdcard/comics/ .

Обратите внимание, что я тестировал это с помощью библиотеки Ion и вашего кода, и это сработало для меня!

  mediaCursor = getContentResolver().query( MediaStore.Files.getContentUri("external"), null, MediaStore.Images.Media.DATA + " like ? ", new String[] {"%comics%"}, null); 
Intereting Posts
Динамически добавлять макет в метод getview адаптера в android Как сделать исполняемый файл из моей игры LIBGDX Эмулятор зависает при загрузке анимации Ожидается запуск HOME ('android.process.acore') Как избежать частых обновлений местоположения? Как получить диалоговую тему предупреждения андроидного мороженого сэндвич? Android HttpURLConnection PUT для Amazon AWS S3 403 ошибка Как сделать первый элемент ListView выбранным по умолчанию при запуске? Индивидуальные сбои, полученные на устройствах Samsung только с версиями Lollipop 5.0 и 5.1 Как создать диалог оповещений с многострочным заголовком? Почему popbackstack вызывает onCreateView фрагмента? Возвращаемый объект из CursorAdapter.get () Тревога очищается при перезагрузке в надводном Строить переменные градиента, которые будут использоваться в коде, в зависимости от типа аромата и типа сборки Как разбить строку на несколько блоков символов? Rx 2 Android, что лучше Single или Observable для звонков api?