Obtener la ruta de 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 elBiblioteca de iones. El creador de la biblioteca (Koush Dutta) ya tiene una muestra haciendo lo que quiero y muestra todas las imágenes delTarjeta SD en un GridView..
Lo que quiero hacer es mostrar solo las imágenes de una carpeta específica en mi tarjeta SD (llamada comics) en GridView. Estoy usando el código directamente del ejemplo anterior, solo modificando algunos nombres.
Mi problema es que no puedo obtener solo las imágenes de la tarjeta SD en el GridView, actualmente obtiene todas las imágenes de la tarjeta SD. Solo 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 es algocomo esta respuesta:
getContentResolver().query(
uri1, Selection,
android.provider.MediaStore.Audio.Media.DATA + " like ? ",
new String[] {str}, null);