안드로이드 8.0에서의 android.os.FileUriExposedException 버그 해결
안드로이드 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가 나올 때마다 버그가 발생하네요 ^^;
오늘도 화이팅입니다.