개요
안드로이드 버전마다 저장소 위치가 상이할 수 있습니다. 저는 안드로이드 13, S21 (SM-G991N)에서 구동하였습니다. 참고해 주세요.
EXTRA_INITIAL_URI 을 활용하여 파일 관리자가 특정 디렉토리를 열도록 만들어 보겠습니다.
주의 사항
intent에 인코딩된 Uri을 전달해 주어야 합니다.
Uri에서 path 단은 반드시 인코딩(예: / -> %2F)된 문자열로 구성되어 있어야 합니다.
// BAD
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:Pictures/");
// GOOD
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary%3APictures%2F");
AOSP Uri parse 메소드에 인코딩된 uriString을 받아야 함을 주석에서 명시하고 있습니다.
/**
* Creates a Uri which parses the given encoded URI string.
*
* @param uriString an RFC 2396-compliant, encoded URI
* @throws NullPointerException if uriString is null
* @return Uri for this given uri string
*/
public static Uri parse(String uriString) {
return new StringUri(uriString);
}
Pictures 열기
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary%3APictures%2F");
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
intent.setType("image/*");
startActivity(intent);
Download/dog 열기
다운로드 디렉토리 내 dog 디렉토리를 열도록 설정할 수 있습니다.
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary%3ADownload%2Fdog%2F");
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
intent.setType("image/*");
startActivity(intent);
기타 디렉토리 열기
문서 디렉토리
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary%3ADocuments%2F");
참고 자료
'프로그래밍 > 안드로이드 <Kotlin>' 카테고리의 다른 글
[android] BottomNavigationView 아이템 클릭 시 shift mode 애니메이션 비활성화하기 (0) | 2024.01.02 |
---|---|
[android/메모] 안드로이드 개발 시 필요한 참고 자료 모음 (0) | 2023.12.11 |
[android] firebase com.google.android.gms.common.api.ApiException: 10: 에러 해결 (1) | 2023.11.23 |
[android] Could not find method kapt() for arguments 에러 해결 (Room 사용 시) (2) | 2023.11.22 |
[android] xmlns android, app 이해 (2) | 2023.11.22 |