Android 如何使用光标读取文件夹的内容
我在读取复制到此路径:/sdcard/DCIM/wallper/文件夹中的一些图像文件时遇到问题 问题在于随机读取这些图像: 我正在使用这个方法,但似乎光标没有读取我传递的URI,发生了什么Android 如何使用光标读取文件夹的内容,android,android-layout,android-intent,Android,Android Layout,Android Intent,我在读取复制到此路径:/sdcard/DCIM/wallper/文件夹中的一些图像文件时遇到问题 问题在于随机读取这些图像: 我正在使用这个方法,但似乎光标没有读取我传递的URI,发生了什么 public static Uri getRandomImage(ContentResolver resolver) { String[] projection = new String[] { BaseColumns._ID }; String folder
public static Uri getRandomImage(ContentResolver resolver) {
String[] projection = new String[] {
BaseColumns._ID
};
String folder = "/sdcard/DCIM/Wallpaper/";
folder = folder + "%";
String where = Media.DATA + " LIKE ?";
String[] whereArgs = new String[]{folder};
Cursor cursor = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, where, whereArgs, MediaColumns._ID);
if (cursor == null || cursor.getCount() <= 0) {
return null;
}
cursor.moveToPosition(new Random().nextInt(cursor.getCount()));
return Uri.withAppendedPath(uri, cursor.getString(0));
}
您正在尝试获取一个目录的Uri,该目录将不会出现在媒体Uri中。因此,您将获得FilenotfoundException 您必须进行自定义查询才能仅获取目录中存在的图像 编辑: 从未尝试过,但一定要尝试一下。where子句应该使用LIKE。如果这不起作用,您可能需要四处查看以构造LIKE子句
String folder = "/sdcard/DCIM/Wallpaper/";
folder = folder + "%";
String where = Media.DATA + " LIKE ?";
String[] whereArgs = new String[]{folder};
cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, where, whereArgs, MediaColumns._ID);
编辑2:
在
getContentResolver
中,返回为nullgetContentResolver
是一种上下文方法。使用上下文。getContentResolver
我用你的建议实现的代码编辑了我的问题,但仍然给我错误,我发布了日志。我不知道你已经有了contentresolver,使用resolver而不是getContentResolver。我用你的建议实现的代码编辑了我的问题,但仍然再次给我错误
String folder = "/sdcard/DCIM/Wallpaper/";
folder = folder + "%";
String where = Media.DATA + " LIKE ?";
String[] whereArgs = new String[]{folder};
cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, where, whereArgs, MediaColumns._ID);