0

我尝试使用:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + file_to_open), "image/*");
context.startActivity(intent);

或者

Intent intent = new Intent();                   intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(file_to_open)),"image/jpeg");
context.startActivity(intent);

它可以工作,但是当我尝试离开图像查看意图时,我得到一个RuntimeExceptionStaleDataException Attempted to access a cursor after it has been closed

当我尝试启动不同的意图时,它会起作用,因此它与暂停或恢复我的活动无关

请有人帮忙

事实证明,它也是其他意图,比如电子邮件意图,当取消时,会犯这个错误

4

1 回答 1

0

找到了答案。它与意图本身无关,但事实上我使用的是以下方法:

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    @SuppressWarnings("deprecation")
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String path = cursor.getString(column_index);
    cursor.close();
    cursor = null;
    return path;
}

请注意,managedQuery 已被弃用,即使您决定使用它,也不应关闭游标或将其设置为 null ,如以下答案所示:

无法恢复活动错误

于 2013-08-13T10:56:57.957 回答