2017-06-28 11 views
0

Android-6以前はすべてアプリケーションでうまくいきました。私のアプリケーションで読む必要があるタブレットのSdcardにファイルがあります。私がMarshmallowデバイスでテストしようとしたときに、そこにディレクトリが見つからないというエラーを投げています。Android 6はSdcardからディレクトリ/ファイルを読み取ることができません

誰でも私の助けとなる可能性のあるものと、迅速な解決策を教えてください。

+0

https://developer.android.com/training/permissions/requesting.html(Android 6.0以降が必要) –

答えて

0

Android 6.0(API 23)以上の端末を使用している場合、は実行時に許可を要求する必要があります

READ_EXTERNAL_STORAGEは危険なに分類されます。だから、

、外部ストレージロジックを読んで実装する前に、ユーザーが許可した場合、あなたがチェックするあなたの活動に

// Request permissions 
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ 
     ActivityCompat.requestPermissions(
       this, 
       new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
       PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE 
     ); 
    } 
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ 
     ActivityCompat.requestPermissions(
       this, 
       new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
       PERMISSION_REQUEST_READ_EXTERNAL_STORAGE 
     ); 
    } 

これを追加する最初の必要性、それを行うには、ユーザー権限

を依頼する必要がありますこのオーバーライドメソッドを追加するパーミッション。

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    switch (requestCode){ 
     case PERMISSION_REQUEST_READ_EXTERNAL_STORAGE: 
      if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       Log.d("PERMISSION", "SUCCESS"); 
      }else{ 
       Log.d("PERMISSION", "FAIL"); 
      } 
      return; 
     case PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE: 
      if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       Log.d("PERMISSION", "SUCCESS"); 
      }else{ 
       Log.d("PERMISSION", "FAIL"); 
      } 
      return; 
    } 
} 
関連する問題