Я хочу реализовать средство выбора изображений, используя галерею Android по умолчанию.
Для запуска этой галереи я использую эту функцию:
private void launchGallery() {
Intent intent = new Intent(
Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, GALLERY_TOKEN);
}
Все это прекрасно работает, галерея запущена, и я улавливаю результат.
Однако проблема в том, что галерея запускается в виде верхнего уровня всех альбомов.
Мое приложение создало подкаталог в / mnt / sdcard / Pictures / App / Album1
Ofcourse Album1 может быть подстановочным знаком имен. Мое задание - запустить эту галерею прямо в выбранную папку вместо представления верхнего уровня.
Я попробовал следующее, но это не работает, кто-нибудь может мне помочь с этой проблемой?
private void launchGallery() {
Intent intent = new Intent(Intent.ACTION_PICK);
File file = new File("/mnt/sdcard/Pictures/App/Album/");
intent.setDataAndType(Uri.fromFile(file), "image/*");
startActivityForResult(intent, GALLERY_TOKEN);
}
Большое спасибо!
- РЕДАКТИРОВАТЬ -
В настоящее время я смотрю на Bucket_ID, как определено mediastore.
Это должно содержать идентификатор родительского каталога.
int bucketIdIndex = cursor
.getColumnIndexOrThrow(Images.ImageColumns.BUCKET_ID);
Для моего файла это печатает отрицательное число.
03-30 13: 40: 21,923: D / ImageHelper (2208): Данные: /mnt/sdcard/Pictures/App/bbb/gvv/376.jpg
Результат:
03-30 13: 40: 21,942: D / ImageHelper (2208): идентификатор корзины: -1014163439
Как определено в нескольких статьях, я использую этот код для создания своего URI:
uri = MediaStore.Images.Media.INTERNAL_CONTENT_URI.buildUpon()
.appendQueryParameter("bucketId", bucketId).build();
Тогда я запускаю его:
Intent intent = new Intent(Intent.ACTION_PICK,
ImageHelper.getDirectoryUri(this, mImageId));
startActivityForResult(intent, GALLERY_TOKEN);
Однако это не работает. Просто запускает вид сверху галереи.