我想使用默认的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);
然而,这不起作用。只需启动画廊的顶视图。