Android

안드로이드 - ACTION_OPEN_DOCUMENT 파일 가져오기

와구와구! 2021. 1. 3. 21:45

IOS 오브젝티브씨 와같이 파일을 가져오려고 한다.

 

 

developer.android.com/guide/topics/providers/document-provider?hl=ko

 

저장소 액세스 프레임워크를 사용하여 파일 열기  |  Android 개발자  |  Android Developers

Android 4.4(API 수준 19)에는 저장소 액세스 프레임워크(SAF)가 도입되었습니다. SAF는 사용자가 선호하는 문서 저장소 제공자 전체에서 문서, 이미지 및 각종 다른 파일을 탐색하고 여는 작업을 간편

developer.android.com

 

시뮬레이터와 실제 안드로이드폰에서의 모습입니다.

 

ACTION_OPEN_DOCUMENT을 통해 열어줍니다.

 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);

        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("text/csv");
        startActivityForResult(intent, READ_REQUEST_CODE);

 

onActivityResult 통해서 파일경로를 가져옵니다 

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {

            if (data != null) {
                Uri uri = data.getData();
                Log.e("uri", uri.toString());
            }
        }
 }

처음에 뒤에 10261같은 숫자로 나와서 이게 실제 경로가아니라서 파일을 못가져오는것이 아닐까 싶었는데

저상태로 파일을 읽고 가져올수 있습니다.

파일이름을 가져옵니다.

  public String getFileName(Uri uri) {
        String result = null;
        if (uri.getScheme().equals("content")) {
            Cursor cursor = getContentResolver().query(uri, null, null, null, null);
            try {
                if (cursor != null && cursor.moveToFirst()) {
                    result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                }
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
            }
        }
        if (result == null) {
            result = uri.getLastPathSegment();
        }
        return result;
    }

 

반응형

'Android' 카테고리의 다른 글

안드로이드 - Java CSV파일(.csv) 읽기  (0) 2021.01.03