Comment distinguons-Nous Jamais Demandé D'Arrêter, en Demandant en Android M de l'Exécution des Autorisations?

Quand il s'agit de la M Developer Preview d'exécution des autorisations, selon Google:

  1. Si vous n'avez jamais demandé une certaine permission avant, il suffit de demander pour elle

  2. Si vous avez demandé avant, et que l'utilisateur dit "non", et que l'utilisateur tente alors de faire quelque chose qui doit être rejeté autorisation, vous devez demander à l'utilisateur d'expliquer pourquoi vous avez besoin de la permission, avant de passer à demander la permission à nouveau

  3. Si vous avez demandé à un couple de fois avant, et que l'utilisateur a dit: "non, et cesse de demander" (via la case à cocher sur l'exécution de l'autorisation de dialogue), vous devriez juste arrêter de déranger (par exemple, désactiver l'INTERFACE utilisateur qui nécessite l'autorisation de l'auteur)

Cependant, nous n'avons qu'une seule méthode, shouldShowRequestPermissionRationale(), de retour d'un boolean, et nous avons trois états. Nous avons besoin d'une façon de distinguer les jamais demandé de l'état de l'arrêt-demander à l'état, alors que nous false de shouldShowRequestPermissionRationale() pour les deux.

Pour les autorisations demandées lors de la première exécution de l'application, ce n'est pas un gros problème. Il y a beaucoup de recettes pour déterminer qu'il s'agit probablement de la première exécution de votre application (par exemple, boolean valeur dans SharedPreferences), et afin de vous supposer que si c'est la première exécution de votre application, vous vous êtes jamais demandé de l'état.

Toutefois, une partie de la vision de l'exécution des autorisations est que vous ne pourriez pas demander à tous d'entre eux à l'avant. Les autorisations liées à frange fonctionnalités vous pouvez seulement demander pour plus tard, lorsque l'utilisateur appuie sur quelque chose qui nécessite l'autorisation. Ici, l'application peut avoir été exécuté plusieurs fois, pendant des mois, avant de nous tout d'un coup besoin de demander une autre autorisation.

Dans ces cas, sommes-nous censés si oui ou non nous avons demandé la permission de nous-mêmes? Ou est-il quelque chose dans l'Android M API qui me manque qui nous dit que si nous avons demandé ou non?

  • C'est toutes les infos que j'ai eu, même chose que ce que tu viens de poster plus.google.com/+BenjaminWeiss/posts/PFSd7wau4n8
  • L'exemple d'application est donc trivial et incomplète, elle pourrait tout aussi bien ne pas exister.
  • Donc meilleure supposition est pour stocker une valeur de type boolean dans SharedPreferences par l'autorisation, ou de toute autre artefact, qui était Google recommandation at IO.
  • Ma préoccupation est la possibilité de la SharedPreferences sortir de la synchronisation avec Android stockée informations d'autorisation. Android est le "système d'enregistrement" en ce qui concerne d'exécution des autorisations. Il a clairement l'information, car sinon il ne pourrait jamais revenir true de shouldShowRequestPermissionRationale(). Je suis juste de voir si il y a un peu de méthode, qui a ajouté que je suis absent, c'est tout.
  • Connaissant Google, ils vont railler shouldShowRequestPermissionRationale() en 6.1 et ajouter une nouvelle méthode qui renvoie un int.
  • Il n'est pas arrivé 🙁

InformationsquelleAutor CommonsWare | 2015-08-10