안드로이드 8.0 이상에서 발생하는 버그가 아닌 보안이 강화되었음 ^^;
기존 사용 uri
Uri photoURI = Uri.fromFile(createImageFile());
이렇게 사용하면 에러가 발생한다. ㅠㅜ
android.os.FileUriExposedException
그래서, 앞으로 이렇게 사용하라고 하네요 ^^
Uri photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", new File(filePath));
1. AndroidManifest.xml 에서 추가
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider>
2. res > xml 폴더에 provider_paths.xml 추가
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-cache-path name="external_files" path="."/> <external-path name="external_files" path="."/> </paths>
그러면, 예외발생이 하지 않습니다.
음. 새로운 OS가 나올 때마다 버그가 발생하네요 ^^;
오늘도 화이팅입니다.
'Android Tip' 카테고리의 다른 글
apk file에서 version 및 각 종 정보 얻기 (0) | 2023.04.21 |
---|---|
XML ImageView에 대한 ContentDescription의 고찰 (0) | 2020.05.07 |
ANR 및 비정상 종료 중 BadTokenException 해결책 (0) | 2018.01.04 |
GlideBitmapPool 적용 (Bitmap Out of Memory) (0) | 2017.09.27 |
애니메이션 처리 후 Activity 이동 (0) | 2017.08.25 |