Галерея Android ACTION_PICK в один каталог (идентификатор корзины) - PullRequest
2 голосов
/ 30 марта 2012

Я хочу реализовать средство выбора изображений, используя галерею 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);

Однако это не работает. Просто запускает вид сверху галереи.

...