인 텐트를 사용하여 사진 경로를 가져 와서 파일로 엽니 다. "/storage/emulated/0/DCIM/Camera/IMG_20160817_232858.jpg"와 같은 "카메라"폴더에 할당 된 파일을 열 수 있지만 "/storage/emulated/0/Pictures/1634894_.png"와 같은 위치에서 파일을 열 수 없습니다. . file.exists()를 사용하면 그냥 그렇지 않다고 말합니다. API 23을 사용 중이며 READ_EXTERNAL_STORAGE를 요청해야하므로이 문제가 발생하지 않을 것입니다 ...하지만 그 파일에도 액세스 할 수 없습니다. 무엇이 잘못 될 수 있습니까?일부 파일이있는 ENOENT
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
File file = new File(picturePath);
if(file.exists()) {
} else {
}
cursor.close();
}
}
업데이트 : 그렇지 같은 폴더의 모든 파일과 발생 않습니다 단지 그들 중 일부,하지만 난 갤러리에서 열 수 있기 때문에 그들이 진짜로 존재한다.
업데이트 2 : 이 인 텐트를 사용합니다.
Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
갱신 3 : 실행 시간 권한 : 매니페스트에
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
SomeWork();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
else {
SomeWork();
}
권한 : 파일 시스템에서 당신에게 접근 할 수없는
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
6.0에서 실행 중이십니까? –
예, Marshmallow – PaulD
을 사용하여 런타임 권한을 얻었습니까? –