1. Permission Denial
java.lang.SecurityException: Permission Denial: reading
com.android.providers.media.MediaProvider uri
content://media/external/images/media/38498 from pid=27232, uid=10472 requires
android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
이 경우는 External storage에서 URI를 가져올 때 권한에 막혀 가져오지 못하는 경우입니다.
위와 같은 경우는 Manifest에 아래와 같이 권한 설정을 해주면 쉽게 가져올 수 있습니다.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2. 이미지 용량 초과
삼성 핸드폰의 경우 'Input agif image larger than 30MB.' 라는 로그 메세지를 보실 수 있
습니다. 일정 용량 이상의 사진파일은 불러오지 못하므로, setImageUri(uri)를 아래와 같이
BitmapFactory를 이용해 이미지의 size를 조정해주시면 불러 올 수 있습니다.
uri = data.getData();try {
BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 2;Bitmap myBitmap = BitmapFactory.decodeStream(view.getContext().getContentResolver().openInputStream(uri), null, options);selectedImageView.setImageBitmap(myBitmap);} catch(Exception e){
e.getStackTrace();
}