Android Gallery ACTION_PICK进入单个目录(存储桶ID)

时间:2012-03-30 08:29:26

标签: android android-intent gallery image

我想使用默认的Android Gallery实现一个图像选择器。 要启动此库,我使用此功能:

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。 这应该包含父目录的ID。

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):bucketId:-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);

然而,这不起作用。只需启动画廊的顶视图。

0 个答案:

没有答案