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