파일이 내부 저장소 or 외부저장소에 있는지 파악
FileProvider 사용법은 커서대면 자세하게 나온다
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
파일을 열기 위해서 필요함
meta-data로 꼭 읽어들일 파일 경로 설정해함
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://github.com/yoosh199/Andorid-Study/tree/main/FileProvider