Я хочу, чтобы отобразить изображение, используя следующий код:BitmapFactory.decodeFile возвращает исключение на Android 4.4 KitKat
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case SELECT_PHOTO:
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Log.wtf("M3K", "Above decode");
Bitmap logoBMP = BitmapFactory.decodeFile(filePath);
Log.wtf("M3K", "Below decode");
//Display image on layout
Log.wtf("M3K", "Above display");
logo.setImageBitmap(logoBMP);
Log.wtf("M3K", "Below display");
}
}
}
Вопрос находится на Bitmap logoBMP = BitmapFactory.decodeFile(filePath);
, где на Android 4.4 (проверено на моем Nexus 7) будет возвращать не найденное исключение, по причине EACCES (разрешение отклонено). Это прекрасно работает на ASUS Transformer Infinity 4.2 и отлично работает на моем Nexus 7 с 4.3. Кто-нибудь знает, что должно измениться для совместимости KitKat?
Примечание: Я получаю изображение URI через следующий код:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PHOTO);
разрешение отказано средства, попытаться дать WRITE_EXTERNAL_STORAGE – SathishKumar