Android M onRequestPermissionsResult en non-Activité
J'ai une application qui a besoin de trouver l'utilisateur emplacement, et l'emplacement est rapportée dans les différentes classes, j'ai donc écrit une catégorie distincte(Pas une Activité de classe) qui récupère l'emplacement de l'utilisateur à l'aide de les services de localisation, il fonctionne bien sous Android M mais nécessite des temps d'exécution des autorisations dans Android M, je veux vérifier les autorisations dans ma position de classe et je sais comment les vérifier, mais je ne peux pas utiliser onRequestPermissionsResult méthode dans ma position de classe, parce que ma position de classe ne s'étend à partir de n'importe quelle activité.
Donc Ce que je doit faire pour atteindre cet objectif? toute aide/indice est apprécié
Merci d'avance
ai-je besoin pour vérifier l'autorisation de l'Activité/Fragment? fondamentalement, je suis la vérification d'autorisation dans ma position de classe
Vous pouvez case pour une autorisation partout où vous avez accès à un
Context
, qui vous aurait présumément dans votre Location
classe, c'est très bien, et aussi exactement ce que vous devriez être en train de faire là.Oui j'ai contexte de ma position de classe, mais comment puis-je remplacer onRequestPermissionsResult
Vous ne voudriez pas.
onRequestPermissionsResult()
suit à partir d'un requestPermissions()
d'appel, qui, comme nous l'avons dit, vous devriez être en train de faire dans votre Activity
, pas dans le Location
classe. Il n'y a pas de rappel pour checkSelfPermission()
.OriginalL'auteur MD Husnain Tahir | 2016-07-20
Vous devez vous connecter pour publier un commentaire.
Depuis public void onRequestPermissionsResult(int requestCode,
Chaîne autorisations[], int[] grantResults) est une méthode abstraite de ActivityCompat.OnRequestPermissionsResultCallback interface.
Voir
la documentation
Juste d'implémenter cette interface dans la classe et c'est fait.
Par exemple
Maintenant de substituer onRequestPermissionsResult()
lorsque vous implémentez OnRequestPermissionsResultCallback interface en non-activité de la classe, vous en aurez sûrement obtenir onRequestPermissionsResult méthode.
eh bien, qui ne peut pas être vrai puisque
requestPermissions()
besoinsActivity
comme paramètre, et pas seulement d'une classe implémentantOnRequestPermissionsResultCallback
Cette réponse ne sera presque jamais de travail.
Je l'ai fait mais il ne marche pas de travail donc, cette réponse est inutile
OriginalL'auteur AkshayK
Vous êtes les bienvenus pour appeler
checkSelfPermission()
à partir d'une classe non-INTERFACE, qui a simplement besoin de quelquesContext
.Toutefois, vous devez appeler
requestPermissions()
sur une activité ou un fragment. Vous remplacezonRequestPermissionsResult()
sur que même de l'activité ou du fragment. Ce n'est pas différent que d'appelerstartActivityForResult()
et la mise en œuvre deonActivityResult()
.L'idée est que vous demandez l'autorisation avant de faire quoi que ce soit qui implique la non-classes de l'INTERFACE utilisateur qui traitent des lieux.
Correct. Vous êtes les bienvenus à l'activité ou du fragment d'appel dans votre classe non-INTERFACE de fournir les résultats de la demande d'autorisation. De préférence, la non-activité de la classe de l'instance n'existe pas encore, bien que -- vous demande et de confirmer l'autorisation avant la création de la
Location
instance et d'essayer de faire des choses avec les données de localisation.Merci pour éclaircir les choses
OriginalL'auteur CommonsWare
Vous ne pouvez pas le remplacer. Cette méthode est uniquement disponible pour l'Activité et des Fragments. Mais vous pouvez créer une méthode statique à l'intérieur de votre Emplacement de la classe et de l'appeler à partir de votre activité/fragment est substituée onRequestPermissionResult méthode.
J'ai fait une implémentation personnalisée pour l'Emplacement combiné avec la permission. Vous pouvez également utiliser une bibliothèque appelée Laisser pour les autorisations.
OriginalL'auteur Embydextrous
1 - créer un transparent de l'activité
2 - personnalisez votre activité
3-
permissionListener
est une interface statique et peut être placé directement avant de contexte.startActivity(...), ou d'utiliser votre plan trouvé l'autorisation résultat.4 - finalement l'appel
context.startActivity(new Intent(context, CheckStoragePermissionsActivity.class));
CheckStoragePermissionsActivity
faire tout nécessaire et terminer après l'utilisateur d'Autoriser ou de Refuser l'action.Votre droit, mais c'est simple et pratique
Juste pour info, ce n'est pas obligatoire de vérifier l'autorisation de l'Activité. Vous pouvez toujours le faire avec juste instance de contexte à partir de n'importe où à l'aide de ContextCompat classe. Vous pouvez même éviter beaucoup de vérifications de version si vous utilisez ContextCompat classe.
OriginalL'auteur Misagh