私はインテントを使って画像のパスを取得し、ファイルに開きます。 "/storage/emulated/0/DCIM/Camera/IMG_20160817_232858.jpg"のように "Camera"フォルダに割り当てられたファイルを開くことができますが、 "/storage/emulated/0/Pictures/1634894_.png"のような場所にファイルを開くことはできません。 。 file.exists()を使うと、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);
Update3と: 実行時の権限:マニフェストで
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
を使用して実行時のアクセス権を取得していますか? –