파일 열기(FileProvider)

유시현·2022년 12월 20일
0

Android

목록 보기
5/34

파일이 내부 저장소 or 외부저장소에 있는지 파악
FileProvider 사용법은 커서대면 자세하게 나온다

외부저장소

1. 외부 저장소는 manifest에 권한 허용

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

2. Provider 생성

파일을 열기 위해서 필요함

meta-data로 꼭 읽어들일 파일 경로 설정해함

3. activity에서 권한 허용하기

TedPermission or Dexter 사용

Dexter.withContext(this).withPermissions(
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.READ_EXTERNAL_STORAGE
        ).withListener(new MultiplePermissionsListener() {
            @Override
            public void onPermissionsChecked(MultiplePermissionsReport multiplePermissionsReport) {
                //허용되면
                File newFile = new File(System.getenv("EXTERNAL_STORAGE")+"/Pictures/IMG_20221220_080156.jpg");
                //System.getenv("EXTERNAL_STORAGE")+"/Pictures/IMG_20221220_080156.jpg"
                //"/storage/emulated/0/Pictures/IMG_20221220_080156.jpg"
                //System.getenv("EXTERNAL_STORAGE") = sdcard
                //sdcard = storage/emulated/0 인거 같음
                Uri contentUri = getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", newFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(contentUri, "image/jpeg");
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                startActivity(intent);
            }

            @Override
            public void onPermissionRationaleShouldBeShown(List<PermissionRequest> list, PermissionToken permissionToken) {
                permissionToken.continuePermissionRequest();
            }
        }).check();
        

withPermissions에 허용한 권한설정한다
onPermissionsChecked에 메인 코드 넣기

파일을 열기 위해서는 file path -> Uri 로 변환해야한다
Intent에 파일 읽기 위한 설정들을 하고 intent 넘겨주면 됨

저장소에 관해서 설명 잘되어있음
https://kimdabang.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-1-Legacy-Storage?category=905599

깃헙
https://github.com/yoosh199/Andorid-Study/tree/main/FileProvider

profile
안드로이드 ,ios 공부하고 있습니다

0개의 댓글