마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Downloadmanager 완료후 파일 찾기 실패

0 추천
갤럭시S21모델에서 DownloadManager로 다운로드 한후 BroadcastReceiver에서 DownloadManager.ACTION_DOWNLOAD_COMPLETE를 수신했습니다.

근데 문제가 다운로드 완료된후 cursor에 필터를 걸어 COLUMN_LOCAL_URI를 조회해서 나온 주소로

new File(Uri.parse(로컬URI주소).getpath()) 경로로 생성한 파일을 exist하면 S21모델에서 false가 떨어집니다.

다른기종에서는 딱히 오류가 발생하지 않는데 안드로이 11이라 그런건지 S21에서만 그런건지 파일이 exist에서 false가 떨어지는 이유가 뭔지 확인이 안되네요. 조언 부탁드립니다.
사막돌고래 (1,410 포인트) 님이 2021년 3월 31일 질문

1개의 답변

0 추천

혹 관련이 있을 수도 있어서 API 문서를 링크를 남깁니다. 

https://developer.android.com/reference/android/app/DownloadManager

addCompletedDownload(String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification)

This method was deprecated in API level 29. Apps should instead contribute files to MediaStore.Downloads collection to make them available to user as part of Downloads.

 

addCompletedDownload(String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification, Uri uri, Uri referer)

This method was deprecated in API level 29. Apps should instead contribute files to MediaStore.Downloads collection to make them available to user as part of Downloads.

위의 두 메소드는 Android 10부터 deprecated되었네요. 혹 이 메소드들을 사용하신다면 관련이 있을 수도 있을 것 같아요.

 

spark (227,830 포인트) 님이 2021년 3월 31일 답변
위에 적은대로 브로드캐스트로 완료를 수신하고 있어 해당 메소드는 사용하지 않고 있습니다.
long mDownloadID = downloadManager.enqueue(request); 이렇게 호출해 사용중입니다. 그런데 정말 특이하게 특정 기종에서만 cursor에서 가져온 localuri가 왜 없는 파일이라는건지 이해가 안되네요.
혹시 퍼미션 관련된 해서는 체크를 해보셨나요? 최근 들어 Android 퍼미션이 강화되면서 디렉토리 접근이 쉽지 않게 되었다는 걸 본 기억이 있어요.
...