안드로이드 7.0 (Nougat) 이상 버전에서 file:// 프로토콜을 사용할 경우
FileUriExposedException 이 발생된다.
처음 이러한 사항을 문서로 읽었을 때는 와닿지 않았다.
그러나...
카메라 사진을 얻기 위해 기존 코드를 사용했더니 여지 없이 앱이 크래시 되었다!
해결방법은 FileProvider 를 사용하는 것이다.
참고문서 : https://developer.android.com/reference/android/support/v4/content/FileProvider
FileProvider 를 사용하기 위해서는 몇가지 설정이 필요하다.
1. Manifest 설정
프로바이더 설정이 필요하다. Application 태그 안에 두면 된다.
2. XML 파일 생성
xml 파일 내용
여러 설정들이 있는데, 외장메모리의 경로를 가져오기 위해 위와같이 설정하였다.
xml 파일 위치
3. Java Code
아래와 같이 FileProvider 를 이용하여, URI 를 가져와야 한다.
file 파라미터는 File 객체이다.
String packageName = getApplicationContext().getPackageName();
Uri uri = FileProvider.getUriForFile(getApplicationContext(),
packageName + ".provider", file);
'안드로이드 > TIP' 카테고리의 다른 글
안드로이드 3.3.1 패브릭 오류 (0) | 2019.02.18 |
---|---|
웹뷰 비동기 로직 호출 (0) | 2019.01.04 |
Screen Orientation (화면 방향) (0) | 2018.07.26 |
Mixing Version (0) | 2018.06.18 |
keystore 정보 가져오기 (0) | 2018.05.04 |