2017-06-28 3 views
0

Vor Android-6 funktionierte alles in meiner Anwendung gut. Es gibt einige Dateien in Sdcard von Tablet, die ich von meiner Anwendung lesen muss. Wenn ich es auf Marshmallow-Geräten getestet habe Es ist Fehler, dass Verzeichnis nicht gefunden wird, während es da ist.Android 6 ist nicht in der Lage, Verzeichnis/Dateien von SD-Karte zu lesen

Kann jemand mir helfen, was eine mögliche Ursache davon sein könnte und was die sofortige Lösung ist.

+0

https://developer.android.com/training/permissions/request.html (erforderlich ab Android 6.0) –

Antwort

0

Wenn Sie ein Gerät mit Android 6.0 (API 23) oder höher verwenden, müssen Sie zur Laufzeit anfordern.

READ_EXTERNAL_STORAGE ist als gefährliche Erlaubnis eingestuft.

Also, bevor implementieren externe Speicherlogik lesen, müssen Sie Benutzerberechtigungen fragen

, das zu tun, müssen zunächst diese in Ihrer Aktivität hinzufügen

// 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 
     ); 
    } 

Dann werden Sie überprüfen, ob der Benutzer erteilt hat Berechtigungen, die diese Überschreibungsmethode hinzufügen.

@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; 
    } 
} 
Verwandte Themen