2016-07-28 12 views
1

次のコード出力は「書き込みが許可されましたが、その後はエラーです」/storage/emulated/0/Download/test.txt:オープンに失敗しました:EACCES(許可が拒否されました)android.permission.WRITE_EXTERNAL_STORAGEは許可されましたがアクセスは拒否されました

どういうところが間違っていますか?

@RunWith(AndroidJUnit4.class) 
public class FileStorageTest { 

    private static final String TAG = FileStorageTest.class.getSimpleName(); 

    @Test 
    public void test() throws Exception { 
     Context context = InstrumentationRegistry.getTargetContext(); 
     if (context.checkSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) { 
      Log.d(TAG, "Write granted"); 
     } else { 
      Log.e(TAG, "Write refused"); 
     } 

     File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.txt"); 
     new FileOutputStream(file).close(); 
    } 
} 
+0

あなたはまた、我々は 'Runtime'で許可の両方のために定義する必要はありません' device.' –

+0

@TimCastelijns卿からデータを読み込むためのREAD_EXTERNAL_STORAGE権限を使用する必要があることができますか? –

+0

@jaydroiderあなたが言うことができるのはドキュメントだ*アプリケーションがマニフェストにリストされている危険なアクセス権を要求していて、アプリが既に同じアクセス権グループに別の危険なアクセス権を持っている場合、システムはユーザーとのやりとりなしに、 –

答えて

1

ます。また、デバイスからデータを読み込むためのREAD_EXTERNAL_STORAGE権限を追加する必要があります。

RunTimeにもこの許可を追加してください。

if (context.checkSelfPermission("android.permission.READ_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) { 
      Log.d(TAG, "Read granted"); 
    } else { 
      Log.e(TAG, "Read refused"); 
    } 
+0

もう一度ありがとう! – RenaudBlue

0

マニフェストファイルにこれを追加してみてください:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
関連する問題