2017-01-27 4 views
0

Android 6Permission Request (WRITE_EXTERNAL_STORAGE) zeigt nach oben nicht

Ich schrieb den nächsten Code, der für Berechtigungen überprüft und wenn es keine solche Berechtigungen sind, fragt es einen Benutzer, sie zu geben.

Dieser Code funktioniert gut für GPS-Berechtigungen, aber nicht für WRITE_EXTERNAL_STORAGE Berechtigungen. Ein Dialog erscheint nur in einem Fall.

Warum kann es so sein?

Danke!

+0

prüfen diese Lösung http://stackoverflow.com/a/37160573/842607 –

Antwort

1

Weil Sie es für 2 mal gleichzeitig anfordern. Deshalb dauert es letzte Anfrage.

Die Lösung besteht darin, dass Sie sowohl die Berechtigung in einer Anfrage fragen

Wie this-

private void checkDiskPermission() 
{ 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED 
      && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
      && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(this, "No Permissions" , Toast.LENGTH_LONG).show(); 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 0); 
    } 
    else 
    { 
     Toast.makeText(this, "Has Permissions" , Toast.LENGTH_LONG).show(); 
    } 
} 
+0

Ich werde dies überprüfen. Vielen Dank! – yurart

1

Wenn permission > 1, als sie zusammen in Runtime kombiniert hat.

Laut Google, beginnend mit Android 6.0 (API Level 23), können Benutzer jederzeit Berechtigungen aus jeder App widerrufen, selbst wenn die App eine niedrigere API-Ebene anvisiert. Sie sollten Ihre App testen, um sicherzustellen, dass sie sich ordnungsgemäß verhält, wenn eine erforderliche Berechtigung fehlt, unabhängig davon, auf welcher API-Ebene Ihre App ausgerichtet ist.

Dinge im Auge zu behalten, während Multiple Erlaubnis zu fragen:

  1. Anzahl der Genehmigung.
  2. Nie wieder Checkox Stellen Sie

Look at the Source for Multiple Permission Request

+0

danke für die Antwort. Aber Vishal Chhodwani war der Erste. – yurart

0

Ihr Code gut funktioniert. Kein Problem in Java-Code für die Laufzeitberechtigung. Sobald Sie Ihr Manifest überprüft haben, fügen Sie diese Zeile hinzu oder nicht?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

ja, ich habe es hinzugefügt. Ich habe herausgefunden, dass ich mehrere gleichzeitige Erlaubnisanfragen hatte. Das Aufteilen hat das Problem gelöst. Ich frage nur nach Berechtigungen, wenn ein Benutzer GPS-Funktionen im Programm verwenden möchte oder wenn er Funktionen verwenden möchte, die Daten auf die Festplatte schreiben. – yurart