티스토리 뷰
안드로이드에서 파일을 선택하기 위한 방법 중 기본 제공 API를 이용하는 방법은,
Intent를 이용하는 것이다. Intent로 파일 선택 Activity를 호출하고, 선택 된 값을 처리하면 된다.
파일에 대한 전체 절대 경로(Absolute Path)를 알 수 없는 것 같다. 파일 처리는 URI객체를 이용해서 해야한다.
파일에 대한 절대 경로는 Uri.getPath()로 얻을 수 있고, ContentResolver의 DISPLAY_NAME은 실제 파일명이 아닌 것 같다.
private static final int REQ_CODE = 123;
Intent intent = new Intent().setType("*/*")
.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, "Select a file"), REQ_CODE);
// onActivityResult()에서 결과값 처리
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQ_CODE && resultCode == RESULT_OK) {
Uri selectedfile = data.getData(); //The uri with the location of the file
// 경로 정보: selectedfile.getPath()
// 전체 URI 정보: selectedfile.toString()
Toast.makeText(getApplicationContext(),
getFileNameFromUri(selectedfile), Toast.LENGTH_LONG).show();
//Log.d(TAG, "Selected: " + selectedfile.toString());
}
}
// URI에서 파일명 얻기
private String getFileNameFromUri(Uri uri) {
String fileName = "";
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
fileName = cursor.getString(
cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
Log.i(TAG, "Display Name: " + fileName);
}
cursor.close();
return fileName;
}
인터넷 검색 중 파일/폴더 처리 관련 사이트 정리.
1) Example of File Explorer in Android
http://android-er.blogspot.com/2012/07/example-of-file-explorer-in-android.html
파일/폴더 목록을 리스트뷰로 표시
2) OpenDialog for Android
Dialog형태의 파일 목록 탐색 및 선택할 수 클래스 구현 예제
'Android' 카테고리의 다른 글
Termux + Desktop Environment (1) | 2020.09.02 |
---|---|
Termux shell 관련 (0) | 2020.09.02 |
Termux + phpmyadmin (0) | 2020.09.01 |
Termux + Apache,PHP,MySQL(MariaDB) (0) | 2020.09.01 |
Android Device 에 대한 정보를 보여주는 앱 (0) | 2020.03.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Android
- xfce4
- GUI
- Screen Recording
- bash
- file selector
- C#
- apm
- WindowsApp
- phpmyadmin
- DotNet
- termux
- ffmpeg
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함