5

我正在制作一个应用程序,要求我列出手机 SD 卡上所有可用的图像。

我尝试查询 ContentResolver 方式,即

Cursor image = getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, new String[]{Images.Media._ID,Images.Media.DATA,Images.Media.DISPLAY_NAME}, null, null, null);

但没有任何结果。

有什么方法可以获取列表,或者如果这不可能,那么是否有任何可能的意图(例如 PICK)允许用户选择一个文件,然后访问用户选择的文件的路径?

4

2 回答 2

9
//where contextObject is your activity
ContentResolver cr = contextObject.getContentResolver();

String[] columns = new String[] {
                ImageColumns._ID,
                ImageColumns.TITLE,
                ImageColumns.DATA,
                ImageColumns.MIME_TYPE,
                ImageColumns.SIZE };
cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                columns, null, null, null);

我的代码和你的很像(除了分解)并且它可以工作。你不需要去向 Gallery Intent 询问东西,它应该可以工作。我的两个猜测是:

1) 确保您的 USB 存储设备未安装,如果是,您将看不到任何外部图像。

2)也许是权限问题?尝试添加 GLOBAL_SEARCH 权限,看看是否有帮助。

于 2010-06-11T07:39:32.200 回答
1

您可以使用图库活动来选择图像,如下所示:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);

在活动的回调中,文件 uri 将位于 intent 参数中

于 2010-06-11T05:57:56.240 回答