Открыть изображение Android в намерении вызывает исключение 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 ответ

Нашел ответ. это не имело ничего общего с самим намерением, но с тем фактом, что я использовал следующий метод:

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, как видно из следующего ответа:

Не удалось возобновить ошибку активности

Другие вопросы по тегам