2016-04-20 12 views
0

Ich befolge derzeit das Tutorial, wie man die Erlaubnis in Android erhält. Jetzt, in der Android-Tutorial, sagt er folgendes eingeben:Erhalte Permission Variable

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, 
        Manifest.permission.ACCESS_FINE_LOCATION)) { 
       GPSExplanation(); 
      } else { 
       ActivityCompat.requestPermissions(MainActivity.this, 
         new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
         MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); 
      } 

     } 

Allerdings verstehe ich nicht, was MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION tun soll. Es sagt, es sollte eine App sein, die int konstant definiert ist. Ich habe Placebo Nummer 1 eingegeben, um vorbei zu gehen, aber ich bin neugierig, was es tatsächlich funktioniert, und warum es enthalten sein muss

Kann mir jemand einen Grund geben, oder Beispiel zeigt die Konstante in Wirkung?

Vielen Dank im Voraus.

Antwort

1

Wenn Sie folgen the tutorial etwas später:

Wenn Ihre App-Anfragen Berechtigungen, zeigt das System ein Dialogfeld für den Benutzer. Wenn der Benutzer antwortet, ruft das System die onRequestPermissionsResult() -Methode Ihrer App auf und übergibt ihr die Benutzerantwort. Ihre App muss diese Methode überschreiben, um herauszufinden, ob die Berechtigung gewährt wurde. Dem Rückruf wird derselbe Anforderungscode übergeben, den Sie an requestPermissions() übergeben haben. Wenn beispielsweise ein App-Anfragen READ_CONTACTS darauf zugreifen könnte die folgende Callback-Methode hat:

@Override 
public void onRequestPermissionsResult(int requestCode, 
    String permissions[], int[] grantResults) { 
switch (requestCode) { 
    case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { 
     // 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. 
     } 
     return; 
    } 

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

}

So zum Beispiel Sie für MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION & MY_PERMISSIONS_REQUEST_READ_CONTACTS in Ihrer App angefordert haben, mit diesem Integer-Konstante Sie kann für einzelne Berechtigungen entsprechend Aktionen ausführen.

+0

Gibt es einen Weg zu ... Standard? Wenn ich nach dem einfachen, 'wenn gewährt, dann tue das', dann setze ich einfach die Konstante auf 1? – ForceFieldsForDoors

+0

ja, Sie können einen beliebigen Wert für Ihre Konstanten setzen. Stellen Sie nur sicher, dass alle für Berechtigungsanforderungen verwendeten Konstanten unterschiedliche Werte haben. – astuter