Programming/Android

exposed beyond app through ClipData.Item.getUri() 에러 발생시

변화의 물결1 2024. 12. 26. 22:12

 

 

안녕하세요.

 

 아직 LG G2 폰과 같은 오래된 폰 대응이 있어서 낮은 버전에서 카메라 작동되면 상위버전은 잘 될 거야 생각했는데, 그렇지 않았습니다.

 

 카메라 촬영하는 소스를 만들고 안드로이드 5버전에서는 문제가 없었는데 7이상 최신 폰에서는 카메라가 작동을 하지 않았습니다.

 

에러 메시지를 보면

 

"exposed beyond app through ClipData.Item.getUri()" 에러가 나왔습니다.

좀 더 자세한 내용은 아래의 참고 사이트 링크를 참고하시면 됩니다.

 

간단히 말해서

 

"Android 7.0 이상부터 파일공유 정책이 변경되었습니다. 그렇기에 File Provider에 대해 알아두셔야 합니다.

 

파일에 일반 경로인  file://~ 을 참조하면 Fileuriexposedexception이 발생합니다.

파일의 공유 uri는 content://로 시작되어야 하며, 접근권을 줘야 하며

안드로이드에서는 FileProvider 사용을 권장하고 있습니다."

 

파일에 일반 경로인  file://~ 을 참조하면 Fileuriexposedexception이 발생합니다 "

위의 내용은 최신 버전을 사용하시는 분들은 이미 알고 있는 내용일 것입니다.

오래된 버전을 작업할 때 참고 하면 어떨까 합니다.

 

아래 링크 내용을  따라 하시면 되는데 추가로 한 곳만 수정해 주시면 됩니다. 

Manifest의 

 

android:name="android.support.v4.content.FileProvider"

 

부분을 아래로 수정해 주면 됩니다.

android:name="androidx.core.content.FileProvider"

 

이렇게 하면 안드로이드5 ~ 9 버전까지 카메라에서 저장한 파일을 공유하는 것이 되기 때문에 정상적으로 카메라도 연동할 수 있습니다.

 

다른 버전에서는 작동하지 않을 수 있습니다.

 

 

감사합니다.

 

 

<참고사이트>

https://namget.tistory.com/entry/안드로이드-File-Provider-파일공유Nougat7-대응 

 

 

반응형