我的Activity包含以下代码,用于获取SD卡上的所有图片:
String[] projection = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.ImageColumns.DATA};
Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, null, null,
MediaStore.Images.Media._ID);
int count = cursor.getCount();
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
int i;
for(i = 0; i < count; i++) {
cursor.moveToPosition(i);
String p = cursor.getString(image_path_index);
fd.addToPhonePhoto(p);
}
cursor.close();
Activity在恢复时发生了以下错误:
03-14 14:06:48.380:E/AndroidRuntime(20793):java.lang.RuntimeException:无法恢复活动{}:java.lang.RuntimeException:无法恢复活动{}:android.database.StaleDataException:尝试访问已关闭的游标。
这只会发生在Android 4.0上。如果在Android 2.x或3.x上,它可以正常工作。但是如果我更改系统设置,在“开发人员选项”中选择“不保留活动”选项,则错误不会显示。
我想修改我的代码以避免更改系统设置而出现此错误。我该怎么做?
managedQuery
来获取缩略图(如果你想要缩略图,难道不应该查询MediaStore.Images.Thumbnails
内容提供者吗?)。此外,你说游标有时为空,但在游标上调用close会不会抛出NullPointerException呢? - user