티스토리 뷰

Android

Android File Open Dialog

컴퓨터 길들이기 2020. 4. 3. 14:55

안드로이드에서 파일을 선택하기 위한 방법 중 기본 제공 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

  https://ryulib.tistory.com/91

  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
링크
«   2024/04   »
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
글 보관함