TargetSDKVersion이 22이므로 사용자에게 permission 요구하는 부분은 생략하였음.
File provider 사용 시 권한 관련 에러날 때
SDK 16 미만 - 권장하지 않음
List<ResolveInfo> resolvedIntentActivities = getContext().getPackageManager().queryIntentActivities(cameraInent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolvedIntentInfo : resolvedIntentActivities) {
String packageName = resolvedIntentInfo.activityInfo.packageName;
getContext().grantUriPermission(packageName, photoURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
SDK 16~21
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {
takePictureIntent.setClipData(ClipData.newRawUri("", photoURI));
takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION|Intent.FLAG_GRANT_READ_URI_PERMISSION);
참고 URL
http://egloos.zum.com/mightyfine/v/315645
https://github.com/ParkSangGwon/TedBottomPicker/issues/31
https://medium.com/@quiro91/sharing-files-through-intents-part-2-fixing-the-permissions-before-lollipop-ceb9bb0eec3a
'개발 > Android' 카테고리의 다른 글
PreferenceManager의 값이 앱 재설치 시 그대로 남아있는 경우 (0) | 2018.05.16 |
---|---|
녹스에서 안드로이드 태블릿 확인 시 디스플레이 설정값 (0) | 2018.04.24 |
RecyclerView 애니메이션 (0) | 2018.04.13 |
안드로이드 촬영, 이미지 가져오기, 자르기 (0) | 2018.02.20 |
Intent로 카카오톡 PDF 파일 전송 (0) | 2017.11.23 |