728x90
SMALL
안녕하세요 남갯입니다
오늘은 ClipData.Item.getUri() Error 해결을 해보려고합니다.
return Uri.fromFile(mediaFile)
를 통해 uri를 가져오는 도중
에러가 발생했습니다.
찾아보니
https://developer.android.com/about/versions/nougat/android-7.0-changes.html#accessibility
7.0부터 file의 uri 노출을 금지하는 보안 정책이 있었습니다.
따라서 content://URI를 보내고 이 URI에 엑세스 권한을 부여해서 FileProvider를 통해 사용하는 방법이 있습니다.
먼저 매니페스트를 수정합니다.
Manifest.xml
<application>
android 의 경우
android:name="android.support.v4.content.FileProvider"
androidx 의 경우
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.namget.camera2.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
res/xml/file_paths.xml
을 추가하였습니다.
저는 DCIM인 갤러리쪽에 들어갈거기 때문에 아래와 같이 추가했습니다.
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="DCIM" path="." />
</paths>
이렇게 만든후에
아까 지정해두었던 authorities 를 통해
source
FileProvider.getUriForFile(this, "com.namget.camera2.fileprovider", mediaFile)
이와 같이 가져오게 되면 해결이 됩니다.
728x90
LIST
'IT > 안드로이드 관련' 카테고리의 다른 글
[안드로이드] 개행과 색상을 넣는법 (0) | 2019.06.24 |
---|---|
[안드로이드] background floating button 만들기 (4) | 2019.06.19 |
[안드로이드] AutoCompleteTextView 자동 검색 기능 만들기 (5) | 2019.05.28 |
[안드로이드] html fromHtml deprecated (0) | 2019.05.27 |
[안드로이드] ripple effect 적용하기 (4) | 2019.04.29 |