我正在制作一个应用程序,要求我列出手机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),通过它我可以允许用户选择一个文件,然后访问用户选择的文件的路径??
Helppppp家伙......
答案 0 :(得分: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权限,看看是否有帮助。
答案 1 :(得分:1)
您可以使用图库活动来选择图像,如下所示:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);
在活动的回调中,文件uri将在intent参数
中