在intent中打开android镜像会导致StaleDataException

时间:2013-08-12 15:58:04

标签: image android-intent runtimeexception staledataexception

我尝试使用:

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);

它可以工作,但是当我尝试离开图像查看意图时,我得到一个 RuntimeException StaleDataException 在游标关闭后尝试访问它

当我尝试启动不同的意图时,它有效,所以它与暂停或恢复我的活动无关

请有人帮忙

结果证明它也是其他意图,比如电子邮件意图,当取消时,会发生错误

1 个答案:

答案 0 :(得分: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 如下面的答案所示:

Unable to resume Activity error