티스토리 뷰
사진 첨부 기능은 모든 앱에서 아주 흔한 기능입니다.
내 프로필 사진을 설정한다던가 글쓰기시에 사진을 첨부한다거나 아주 흔하게 사용되는 기능이죠
대부분 파일첨부시에 갤러리앱을 열어서 내가 특정 파일을 선택하면
다시 원래 앱으로 돌아오고 그 파일을 서버로 전송하게 되는데요
이미 기존에 구현해놓았던 파일 첨부 기능이 android 10(API level 29) 이상에서 동작하지 않는다면 다음과 같은 코드를 사용하고 있지는 않은지 확인해보세요
아마도 여러분의 코드가
getContentResolver().query() 함수를 이용해서
MediaColumns의 DATA 컬럼의 값을 가져오는 방식을 사용하셨을 확률이 높습니다.
갤러리에서 내가 선택한 파일의 URI값을 가져온다음에 해당 URI를 통해 실제 파일이 있는 path를 찾는 방법으로 많이 사용되던 방식입니다.
떠도는 많은 코드스니펫들이 getRealPathFromURI 라는 이름의 함수로 이러한 방식으로 구현되어있거든요
그런데 안드로이드 공식문서에 이렇게 언급되어있습니다.
This constant was deprecated in API level 29. Apps may not have filesystem permissions to directly access this path. Instead of trying to open this path directly, apps should use ContentResolver#openFileDescriptor(Uri, String) to gain access.
DATA 는 API level 29 에서부터 deprecated 되었다고 하는군요.
developer.android.com/reference/android/provider/MediaStore.MediaColumns#DATA
그래서 uri에서 real path를 가져올때 이 방법이 아닌 openFileDescriptor를 사용하는 방법을 권하고 있습니다.
openFileDescriptor를 사용하는 안드로이드의 새 저장소 이용방법은 설명이 기니깐 관련 링크로 대체합니다...
developer.android.com/training/data-storage/shared/media?hl=ko
developer.android.com/training/data-storage/shared/documents-files?hl=ko
developer.android.com/training/camera/photobasics
'WEB2.0 > 프로그래밍' 카테고리의 다른 글
0원으로 와일드카드 SSL인증서 사용하기 (0) | 2021.03.30 |
---|---|
mongodb transaction 사용하기 (0) | 2021.03.29 |
github action으로 cron schedule 무료로 (0) | 2021.03.25 |
애플 로그인 활성화시키기 (0) | 2021.01.18 |
맥(mac)에서 jdk 기본 설정 변경하기 (0) | 2020.12.02 |
- Total
- Today
- Yesterday
- 게임
- 네이버
- 아이디어
- iPhone
- 앱스토어
- JavaScript
- 경진대회
- 벤처
- 소프트웨어
- AWS
- 공모전
- 자바스크립트
- android
- 대학생
- CSS
- 안드로이드
- 스마트폰
- 앱
- 구글
- 어플리케이션
- 웹표준
- 창업
- 애플
- 모바일
- Apple
- php
- 아이폰
- 트위터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |