티스토리 뷰

반응형

카메라로 사진을 찍고 이미지 파일을 가져와 사용하려는중 에러가 발생했다.

 

Android 7.0이상의 경우 앱 외부에 file://URI 의 노출을 금지하기 때문에 FileUriExposedException 이 발생한다.

 

따라서 파일 공유를 위해서 content://URI 형식을 바꿔주고 권한을 부여해야한다.

 

그렇기위해 FileProvider를 사용해야하는데 

 

아래에 다음과 같이 AndroidManifest.xml파일에 아래 코드를 추가한다.

<application>
...
<provider
android:authorities="com.example.myproject.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
...
</application>
 
 

그후 아래 android:resource="@xml/file_paths" 에 해당하는 파일을 만들어준다

//res 파일 하위에 xml폴더를 생성후 file_paths.xml 파일을 만들어 아래 코드를 추가한다.

 

android:authorities="com.example.myproject.fileprovider"의 경로는 본인 프로젝트의 경로로 대체한다.

 

<?xml version="1.0" encoding="utf-8"?>
    <external-path name="my_images" path="" />
</paths>
 
 

 

 

그 후 아래와같이 fromFile을 통해 받아온 Uri를 FileProvider를 사용하는 방식으로 대체한다.

 val photoUri = Uri.fromFile(tempFile)
 
 
->  val photoUri = FileProvider.getUriForFile(this"com.example.myproject.fileprovider", tempFile)
 

마찬가지로 "com.example.myproject.fileprovider" 의 경로는 본인 프로젝트의 경로로 대체한다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함