Получить путь к MediaStore определенной папки
Я создаю обновление для своего приложения, в нем есть папка с сохраненными изображениями, которые я хотел бы отобразить в GridView. Я уже используюИонная библиотека, Создатель библиотеки (Коуш Датта) уже имеет образец, который делает то, что я хочу, и отображает все изображения из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);