2017-06-07 2 views
0

In den Android-Versionen niedriger als der Marshmallow, kann ich meine Anwendung ausführen, die eine Datei auf den externen Speicher schreibt. Und in diesen Systemen wird die Erlaubnis zum Zeitpunkt der Installation der App gewährt. Aber als ich versuchte, meine Anwendung in Marshmallow auszuführen, hieß es "die App benötigt keine Berechtigungen" zum Zeitpunkt der Installation. Und die Anwendung wird unerwartet beendet, wenn ich die Schreibfunktion ausführe.Müssen wir explizit eine andere Berechtigung als AndroidManifest.xml in Marshmallow anfordern?

In der Regel fordert das Gerät zum Zeitpunkt des ersten Öffnens die Erteilung von Berechtigungen für jede App an. aber in meiner App passiert das auch nicht.

Antwort

0

Sie müssen die Laufzeitberechtigungen für Android 6.0+ (Marshmallow) selbst bereitstellen. Weitere Informationen finden Sie unter here.

1

In Android M und höher müssen Sie nach den Berechtigungen fragen, die als "gefährlich" eingestuft sind. Sie können eine vollständige Liste der Berechtigungen finden, die angefordert werden müssen here.

Sie können jedoch die Anforderung vermeiden, indem Sie compileSDK und targetSDK auf < 23 setzen. Beachten Sie, dass dies die Verwendung der API 23 + -Funktionen verhindert.

Sie fordern die Berechtigungen wie folgt aus:

ActivityCompat.requestPermissions(MainActivity.this, 
       new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},//Your permissions here 
       1);//Random request code 

Überprüfen Sie, ob der Benutzer API läuft 23+ by doing:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
    //Request: Use a method or add the permission asking directly into here. 
} 

Und wenn Sie das Ergebnis überprüfen, dann können Sie es tun wie folgt:

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case 1: { 

      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 
       // contacts-related task you need to do.   
      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
       Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show(); 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 
+0

wow..Danke .. !! –

Verwandte Themen