Obtener la ruta MediaStore de una carpeta específica

Estoy creando una actualización para mi aplicación, en ella tengo una carpeta con imágenes guardadas que me gustaría mostrar en un GridView. Ya estoy usando la biblioteca de iones . El creador de la biblioteca (Koush Dutta) ya tiene una muestra haciendo lo que quiero y muestra todas las imágenes de la tarjeta SD en un GridView. .

Lo que quiero hacer es mostrar sólo las imágenes de una carpeta específica en mi tarjeta SD (llamada cómics) en el GridView. Estoy usando el código directamente de la muestra anterior, solo modificando algunos nombres.

Mi problema es que no puedo obtener sólo las imágenes de la tarjeta SD en el GridView, actualmente se obtiene todas las imágenes de la tarjeta SD. Sólo quiero de la carpeta / sdcard / Comics /

Código

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); } } } 

He intentado algunas cosas, una que es algo como esta respuesta :

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

Simplemente lo deduje con la ayuda de esta respuesta .

Resulta que todo lo que necesitas hacer es usar este código para obtener el cursor, y sólo cargará imágenes de la carpeta /sdcard/comics/ .

Tenga en cuenta que he probado esto con la biblioteca de iones y su código, y funcionó para mí!

  mediaCursor = getContentResolver().query( MediaStore.Files.getContentUri("external"), null, MediaStore.Images.Media.DATA + " like ? ", new String[] {"%comics%"}, null); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.