2017-03-11 15 views
1

画像を保存しようとしたとき、私はギャラクシーJ5(アンドロイド6.0)に次のエラーを取得しています:はオープ​​ンに失敗しました:EACCES(パーミッション拒否)

java.io.FileNotFoundException: /storage/FA49-E5D3/DCIM/Camera/20170311_140435.jpg: open failed: EACCES (Permission denied) 

私は、次の権限があります。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
を活性の

if (Build.VERSION.SDK_INT >= 23) { 
     System.out.println("checking permissions..."); 
     // -------------------------------------- PERMISOS CAMARA ------------------------------------------------- 
     if (checkSelfPermission("android.permission.CAMERA") != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{"android.permission.CAMERA"}, 137); 
      return; 
     } 
     // ---------------------------------- PERMISOS READ EXTERNAL --------------------------------------------- 
     if (checkSelfPermission("android.permission.READ_EXTERNAL_STORAGE") != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{"android.permission.READ_EXTERNAL_STORAGE"}, 139); 
      return; 
     } 
     // ---------------------------------- PERMISOS WRITE EXTERNAL --------------------------------------------- 
     if (checkSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 138); 
      return; 
     } 
    } else { 
     System.out.println("API < 23... Skip permissions..."); 
    } 

メモがこのパスで画像を保存するモトローラG3(アンドロイド6.0)で正常に動作していること:

/storage/emulated/0/DCIM/Camera/IMG_20170311_115623958.jpg 
+0

あなたはそのパスを取得していますか? – antlersoft

+0

public String getOriginalImagePath(){ String [] projection = {MediaStore.Images.Media.DATA}; カーソルカーソル= this.managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI、 投影、null、null、null); int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToLast(); return cursor.getString(column_index_data); } – danielctf

答えて

2

マイクロSDカードにファイルを書き込もうとしています。しかし、彼らは今日のアプリケーションのためだけに読んでいます。システムカメラアプリケーションだけがSDのDCIMフォルダに書き込む権限を持つことができます。

getExternalFilesDirs()が返す2番目の項目を見てください。あなたのアプリはSDカード上のそのアプリの特定のディレクトリに書き込むことができます。

+0

これは機能します。ありがとう。 – danielctf

関連する問題