Android не может выбрать изображение из галереи (Android 6.0 и Android 5.1.1)
Я использую код ниже, чтобы выбрать файл изображения из галереи устройства:
Сначала я называю этот кусок кода:
Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(i, "Select Picture"), RESULT_LOAD_IMAGE);
Это моеonActivityResult
метод:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
photoPath = getPath(data.getData());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis;
try {
fis = new FileInputStream(new File(photoPath));
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf))) {
baos.write(buf, 0, n);
}
img.setImageBitmap(BitmapFactory.decodeFile(photoPath));
} catch (Exception e) {
e.printStackTrace();
}
}
}
И это вспомогательный метод для получения пути к изображению:
private String getPath(Uri uri) {
String[] data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(getApplicationContext(), uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
Моя проблема в том, что приложение странное. В моем эмуляторе 6.0 иногда работает, а иногда нет. На другом устройстве (Android 5.1.1)FileNotFound Exception
брошен на этой линии
fis = new FileInputStream(new File(photoPath));
Все необходимые разрешения в порядке. Ребята, вы понимаете, что здесь происходит? Или у вас есть лучшее предложение, что использовать, чтобы выбрать изображение из галереи?