Je travaille actuellement sur une application qui nécessite plusieurs permissions "dangereuses". J'ai donc essayé d'ajouter "demander la permission" comme requis dans Android Marshmallow (API niveau 23), mais je n'ai pas trouvé comment le faire.
Comment puis-je demander une autorisation en utilisant un nouveau modèle d'autorisation dans mon application?
Réponses:
Ouvrez une boîte de dialogue en utilisant le code ci-dessous:
Obtenez le résultat de l'activité comme ci-dessous:
Plus d'informations: https://developer.android.com/training/permissions/requesting.html
la source
ActivityCompat.requestPermissions
obsolète? (en Nugat)Cette structure que j'utilise pour vérifier si mon application a l'autorisation et demander si elle n'en a pas. Donc, dans mon code principal à partir duquel je veux vérifier l'écriture suivante:
Le module checkIfAlreadyhavePermission () est implémenté comme:
Le module requestForSpecificPermission () est implémenté comme:
et remplacer dans l'activité:
Reportez-vous à ce lien pour plus de détails: http://revisitingandroid.blogspot.in/2017/01/how-to-check-and-request-for-run-time.html
la source
checkIfAlreadyhavePermission
àreturn result == PackageManager.PERMISSION_GRANTED;
J'ai utilisé ce wrapper (recommandé) écrit par des développeurs Google. C'est super facile à utiliser.
https://github.com/googlesamples/easypermissions
Fonction de vérification et demande d'autorisation si nécessaire
Bon codage :)
la source
À partir d'Android Marshmallow, nous devons demander à l'utilisateur des autorisations spécifiques. Nous pouvons également vérifier par code si l'autorisation est déjà donnée. Voici une liste des autorisations généralement nécessaires:
Voici un exemple de code pour vérifier les autorisations:
la source
Ma classe pour demander des autorisations d'exécution dans
Activity
ouFragment
Cela vous aide également à montrer la justification ou à ouvrir le paramètre pour activer l'autorisation après que l'utilisateur a refusé une autorisation (avec / sans
Never ask again
) option plus facileUtilisation
Activity
commeCode sur Github
Démo
la source
Android-M ie, l'API 23 a introduit les autorisations d'exécution pour réduire les failles de sécurité dans les appareils Android, où les utilisateurs peuvent désormais gérer directement les autorisations des applications au moment de l'exécution.si l'utilisateur refuse une autorisation particulière de votre application, vous devez l'obtenir en demandant la boîte de dialogue d'autorisation que vous avez mentionné dans votre requête.
Vérifiez donc avant l'action, c'est-à-dire vérifiez que vous avez l'autorisation d'accéder au lien de ressource et si votre application n'a pas cette autorisation particulière, vous pouvez demander le lien d' autorisation et gérer la réponse de demande d'autorisation comme ci-dessous.
Alors finalement, c'est une bonne pratique de passer par des changements de comportement si vous prévoyez de travailler avec de nouvelles versions pour éviter les fermetures forcées :)
Meilleures pratiques en matière d'autorisations.
Vous pouvez consulter l'exemple d'application officiel ici .
la source
À partir d'Android Marshmallow (API 23) et supérieur par défaut, toutes les autorisations dangereuses (selon le document officiel de la documentation officielle ) sont désactivées. Après l'installation, lorsque l'application est ouverte pour la première fois, vous devez accorder l'autorisation au moment de l'exécution.
J'ai réalisé cette manière suivante:
DANS Votre classe d'activités:
la source
Ajoutez les autorisations à AndroidManifest.xml
Pour vérifier la version d'Android si elle a besoin d'une autorisation d'exécution ou non.
Demandez à l'utilisateur d'accorder l'autorisation si elle n'est pas accordée.
Faites quelque chose si la permission a été accordée ou non.
la source
J'utilise ceci comme une classe Fragment de base. Je ne demande des autorisations qu'à partir d'un fragment, mais vous pouvez le refactoriser et créer une version d'activité similaire.
Vous devez utiliser deux méthodes principales:
hasPermissionOrWillAsk - Utilisez ceci pour voir si une autorisation a été demandée et refusée par un utilisateur qui ne souhaite pas être redemandé. Ceci est utile pour désactiver l'interface utilisateur lorsque l'utilisateur a donné sa réponse finale à propos de ne PAS vouloir de fonctionnalité.
runNowOrAskForPermissionsFirst - Utilisez cette option pour exécuter du code nécessitant des autorisations. Si l'utilisateur a déjà accordé l'autorisation, le code s'exécutera immédiatement. Sinon, le code s'exécutera plus tard si l'utilisateur accorde l'autorisation. Ou pas du tout. C'est bien parce que vous spécifiez le code en un seul endroit.
Voici un exemple:
Heureux de recevoir des commentaires à ce sujet. Non pas que cet exemple spécifique soit un peu simplifié dans la mesure où vous devez également vérifier si les services de localisation sont activés sur l'appareil. (C'est différent des autorisations.) En outre, il ne prend en charge qu'une seule autorisation à la fois, mais serait simple à modifier si vous en avez besoin pour en prendre plusieurs à la fois.
la source
C'est peut-être une manière plus propre. Ajoutez toutes vos autorisations dans un tableau comme
Quelle que soit votre autorisation, créez une méthode pour chaque autorisation
Appelez cette méthode dans onCreate
Remplacez maintenant onRequestPermissionsResult
la source
Pour plusieurs autorisations à la fois, vous pouvez l'utiliser. Ce travail pour moi .. J'ai une autre solution. si vous donnez votre targetSdkVersion ci-dessous 22 cela fonctionne pour moi. et il se comporte comme obtenir l'autorisation de manifest.xml. Testé et fonctionne pour moi.
Pour plus de détails. Vérifiez le lien ci-dessous
https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en
la source
Pour gérer les autorisations d'exécution, Google a fourni un projet de bibliothèque. Vous pouvez vérifier cela à partir d'ici https://github.com/googlesamples/easypermissions
EasyPermissions est installé en ajoutant la dépendance suivante à votre fichier build.gradle:
Pour commencer à utiliser EasyPermissions, demandez à votre activité (ou fragment) de remplacer la méthode onRequestPermissionsResult:
Ici, vous obtiendrez un exemple fonctionnel du fonctionnement de cette bibliothèque https://github.com/milon87/EasyPermission
la source
Il existe une bonne bibliothèque qui peut être utilisée au cas où des autorisations doivent être demandées lorsqu'une autorisation est requise par un service d'arrière-plan. Bien qu'une limitation de la bibliothèque soit qu'elle ne peut pas être utilisée pour simplement déterminer si des autorisations sont actuellement accordées à l'application ou non. Il demande toujours à l'utilisateur si l'application ne les a pas déjà.
Essayez-le car cela vous simplifie la vie: autorisations Android
la source
Ce code ci-dessous fonctionne parfaitement, j'explique à l'aide d'un exemple.
Dans mon cas, j'ai placé les contrôles d'autorisation séparément dans une classe util et j'ai passé les autorisations spécifiques que je dois vérifier dans les classes appropriées, ce qui a permis de réutiliser le fichier util de vérification des autorisations dans l'ensemble de l'application.
La partie de code ci-dessous montre l'appel de fonction.Dans ce cas, je demande l'
android.Manifest.permission.READ_EXTERNAL_STORAGE
autorisation.Dans le cas ci-dessus, l'autorisation est vérifiée si elle est autorisée, la
onAttachPressed();
fonction est appelée, sinon nous vérifions l'autorisation de demande.Le ci-dessous est le code présent dans la classe util dans mon cas
PermissionUtils
Et après la demande, si vous souhaitez appeler la fonction depuis
onRequestPermissionsResult
ou sinon, vous devrez appuyer à nouveau sur le bouton pour l'appel de fonction.Alors appelle-le juste de
onRequestPermissionsResult
la source
J'utilise RxPermission bibliothèque de bibliothèque pour demander la permission. Parce que c'est du code long qu'il faut écrire pour demander la permission.
Ajoutez ces dépendances dans votre
build.gradle
la source
Essaye ça
C'est le moyen le plus simple de demander l'autorisation dans la version Marshmallow.
Remarque: - N'oubliez pas d'ajouter cette même autorisation dans le fichier manifeste également
Deuxième méthode Code pour vérifier si l'autorisation est accordée ou non?
Et écraser la méthode
la source
Un moyen simple de demander la permission en évitant d'écrire beaucoup de code,
https://github.com/sachinvarma/EasyPermission
Comment ajouter :
Comment demander la permission:
En espérant que cela sera utile pour quelqu'un.
la source
J'ai parcouru toutes les réponses, mais je n'ai pas satisfait ma réponse exacte nécessaire, voici donc un exemple que j'ai écrit et qui fonctionne parfaitement, même l'utilisateur clique sur la case à cocher Ne plus demander .
Créez une méthode qui sera appelée lorsque vous souhaitez demander l'autorisation d'exécution comme
readContacts()
ou vous pouvez également avoiropenCamera()
comme indiqué ci-dessous:Maintenant, nous devons faire
askContactsPermission()
, vous pouvez également le nommer commeaskCameraPermission()
ou quelle que soit la permission que vous allez demander.Avant d'écrire cette fonction, assurez-vous d'avoir défini la variable d'instance ci-dessous comme indiqué:
Maintenant, dernière étape pour remplacer la
onRequestPermissionsResult
méthode comme indiqué ci-dessous:Ici, nous en avons terminé avec les autorisations RunTime, l'addon est le
openPermissionSettingDialog()
qui ouvre simplement l'écran de configuration si l'utilisateur a définitivement désactivé l'autorisation en cliquant sur la case à cocher Ne plus demander . ci-dessous est la méthode:Qu'est-ce que nous avons manqué? 1. Définition des chaînes utilisées dans
strings.xml
Initialisation de la méthode
parentLayout
variable insideonCreate
parentLayout = findViewById (R.id.content);
Définition de l'autorisation requise dans
AndroidManifest.xml
La
queryContacts
méthode, en fonction de vos besoins ou de l'autorisation d'exécution, vous pouvez appeler votre méthode avant laquelle lepermission
était nécessaire. dans mon cas, j'utilise simplement le chargeur pour récupérer le contact comme indiqué ci-dessous:Cela fonctionne très bien pour le codage heureux :)
la source
Si vous utilisez AndroidX Activity 1.2.0 ou AndroidX Fragment 1.3.0 :
Il existe de nouvelles API de résultat d'activité que vous pouvez utiliser pour demander des autorisations:
la source
la source
Vous pouvez utiliser ma bibliothèque - NoPermission (c'est juste une classe)
compile 'ru.alexbykov:nopermission:1.1.1'
Échantillon
onRequestPermissionResult:
Je pense que l'api est plus pratique que
EasyPermissions
Google.la source
Autorisation d'exécution AnyWhere dans l'application Voici un exemple
et appelez le code comme ceci:
vous pouvez trouver plus de Github
la source
L'autorisation d'exécution crée beaucoup de code standard dans l'activité qui est fortement couplé. Pour réduire le code et faciliter la tâche, vous pouvez utiliser la bibliothèque Dexter .
la source
PERMISSION D'EXÉCUTION DANS ANDROID
La méthode OnClick consiste à vérifier l'autorisation d'exécution
et si l'autorisation est restreinte, il demande l'autorisation
la source