Android runtime autorisations - comment mettre en place
Développeur Android Documentation donne cet exemple de demander des autorisations au moment de l'exécution:
//Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
//Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
//Show an expanation to the user *asynchronously* -- don't block
//this thread waiting for the user's response! After the user
//sees the explanation, try again to request the permission.
} else {
//No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
//MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
//app-defined int constant. The callback method gets the
//result of the request.
}
}
Ce qui est "MY_PERMISSIONS_REQUEST_READ_CONTACTS" dans cet exemple? Il dit que c'est une application défini par l'int constant, mais est-ce à dire que je devrais faire un Constants.java et de déclarer un public static int? Quelle devrait être la valeur de l'être?
Dans d'autres exemples, je vois des gens utiliser 1, 0 ou 0xFFEEDDCC, mais je ne peux pas trouver une explication de ce que c'est. Quelqu'un peut m'expliquer ce qui doit aller ici et pourquoi? (Dans mon cas, je dois veiller à l'application dispose de l'autorisation d'accès fine)
La ActivityCompat documentation dit "spécifique à l'Application code de la demande de match avec un résultat communiqué à onRequestPermissionsResult"? Cela ne m'aide pas.
Vous pouvez vérifier une classe que j'ai créé et de l'utiliser dans des Fragments github.com/mptrista/PermissionHelper C'est pour des fragments et, dans le cas de demande d'autorisation unique.
OriginalL'auteur Andrew Torr | 2016-02-02
Vous devez vous connecter pour publier un commentaire.
C'est un
int
, pour attacher un particulierrequestPermissions()
appel à la correspondanteonRequestPermissionsResult()
de rappel.Sous les couvertures,
requestPermissions()
utilisestartActivityForResult()
; ceint
sert le même rôle que dansstartActivityForResult()
.Je voudrais juste faire un
private static final int
dans l'activité. Mais, vous pouvez déclarer où vous le souhaitez.Me semble me rappeler qu'il doit être en dessous de 0x8000000, mais sinon, il peut être tout ce que vous voulez. La valeur que vous utilisez pour chaque
requestPermissions()
appel à une activité devriez obtenir une netteint
, mais le nombre réel de personnes n'ont pas d'importance.Si votre activité n'a qu'un seul
requestPermissions()
appel, puis laint
valeur n'a pas vraiment d'importance. Mais de nombreuses applications vont avoir plusieursrequestPermissions()
appels à une activité. Dans ce cas, le développeur peut avoir besoin de savoir, dansonRequestPermissionsResult()
, ce qui demande c'est le résultat.OriginalL'auteur CommonsWare
Regarder juste un peu plus bas dans la documentation sous "Gérer les autorisations de réponse de demande" et vous verrez son but.
Une méthode de callback appelée
onRequestPermissionsResult
est renvoyé le même code en tant que paramètre de sorte que vous savez de laquelle l'autorisation a été demandée/accordée:Depuis la constante est utilisée que par vous, vous pouvez lui donner n'importe quelle valeur comme un
public static final int
. Chaque autorisation demandée a besoin de sa propre constante.OriginalL'auteur George Mulligan