안녕하세요.
아직 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-대응
'Programming > Android' 카테고리의 다른 글
플래그먼트 갱신, 새로고침 하는 방법 (fragment refresh) (2) | 2024.12.28 |
---|---|
안드로이드 앱에서 오버레이 화면 사용하는 방법 (0) | 2024.12.23 |
AndroidUSBCamera:libausbc:3.2.8 버전에서 Received status code 401 from server: Unauthorized에러 발생 시 (2) | 2024.12.11 |