12
votes

Autorisation du temps d'exécution de la guimauve

une telle fonctionnalité de sécurité nouvelle et géniale est permission d'exécution

J'essaie de le comprendre et de faire une démonstration pour cela, mais une question soulevée dans mon esprit que lorsque je suis à la permission de l'utilisateur de gérer avec dialogue.

Comment gérer " ne jamais demander à nouveau "

 Entrez la description de l'image ici

Supposons que mon application doit avoir besoin d'une localisation / contact, mais l'utilisateur le nie avec "ne jamais demander à nouveau".

Que puis-je faire pour cela. Tous les utilisateurs ne comprennent pas que mon champ n'est requis.

Toute suggestion?


2 commentaires

J'ai créé la bibliothèque pour cela. Il est facile à utiliser par des étapes simples. GITUB.COM/KISHANJVAGHELA/ASK-PERMISSION


Essayez ceci, c'est peut-être fonctionner Stackoverflow.com/a/41221852/5488468


4 Réponses :


5
votes

Tout d'abord, vous devez d'abord implémenter onereQuestPritmissionsResultCallback de de ActivityCompat Classe dans votre Activité et remplacement vide OnRequestPermissionsResult (int DemandeCode, @nonnull String [] Autorisations, @nonnull Int [] Grantresults) Pour vérifier si l'utilisateur autorise ou nier la permission

Vous pouvez faire comme ça. Ici, je vérifie l'accès de la permission pour wreck_external_storage : xxx

ici est oneQuestPritmissionsResult () sera appelé lorsque l'utilisateur permettra de permettre ou refuser la permission de la boîte de dialogue d'autorisation d'exécution.

Vous pouvez également gérer la situation lorsque l'utilisateur a vérifié la boîte de dialogue d'autorisation d'exécution, car vous pouvez afficher le snackbar ou le bouton pour rediriger l'utilisateur à votre page Paramètres de l'application, car vous ne pouvez pas afficher La boîte de dialogue permanent après l'utilisateur a vérifié "Ne jamais demander à nouveau" . xxx

ici, j'ai utilisé snackbar pour afficher le message pertinent à l'utilisateur sur la permission et MainLayout est ID de la mise en page principale de

espérons que cela vous aide.


5 commentaires

TX pour la suggestion, je l'ai déjà implémenté, mais ce que je dis que supposons que l'utilisateur cliquez sur nier, mais mon application doit avoir besoin de l'emplacement de ce que je peux faire ?? Comment convaincre l'utilisateur?


Vous donnez une explication à l'utilisateur pourquoi cette autorisation est requise par l'application. vous donnez également une situation que ce qui se passe si l'utilisateur n'a pas permis la permission


@VishaLpatel Oui L'application ne fonctionnera pas si la permission est nécessaire


@VishaLpatel Si l'utilisateur sélectionne "Ne jamais demander à nouveau" votre permission a été refusée de manière permanente et ne peut être activée que via des paramètres Android. Si l'autorisation est la clé de votre application, je vous suggère d'utiliser des messages «amorçage» avant de poser la permission. Vous pouvez afficher une boîte de dialogue d'amorçage (ou une vue en plein écran) afin de sensibiliser l'utilisateur pourquoi vous avez besoin de la permission et de ce qui arrive à la fonctionnalité de l'application s'il n'est pas accordé. Après cela, vous pouvez demander la permission. Jetez un oeil à cette bibliothèque GITUB.COM/AITORVS/ALDME qui implémente également des dialogues d'amorçage simples.


J'ai créé la bibliothèque pour cela. Il est facile à utiliser par des étapes simples. GITUB.COM/KISHANJVAGHELA/ASK-PERMISSION



1
votes

Ouvrez votre paramètre d'application lorsque l'utilisateur a choisi "NERVER Demandez à nouveau"

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, REQUEST_PERMISSION_SETTING);


0 commentaires

2
votes

J'ai créé une bibliothèque qui gère toutes les autorisations pour vous. Vous pouvez le trouver ici:

PermissionHelper


Pour répondre à votre question:

Pour que vous sache si l'utilisateur coché ne montre plus jamais que vous devrez vérifier deux choses, si l'autorisation est refusée et non explication nécessaire si ces deux ** vrai ** Cela signifie que la permission n'est plus disponible et La seule solution à gérer ce cas consiste à ouvrir l'écran Paramètres.

P.s: La bibliothèque j'ai créée gérer tous ces types de scénarios pour vous et renvoie des rappels pour vous pour décider quoi faire ensuite!. La bibliothèque a deux implémentations

  1. Mise en œuvre manuelle (ce qui signifie que vous devrez mettre en œuvre le rappel de votre activité et écouter le rappel retourné de la bibliothèque).
  2. Laissez la bibliothèque Demander la permission pour vous et cela vous rappellera également un rappel pour vous permettre de décider de ce qui se passe lorsque la permission est refusée en permanence.

0 commentaires

0
votes

Utilisez Dexter Bibliothèque

ou H2>

PermingsDispatcher: H2>

Étape 1: Utilisez PermissionsDispatcher Bibliothèque par Hotchemi (la bibliothèque est basée sur l'annotation, simple à utiliser et bien documenté) p>

Étape 2: Vous devez fournir 4 méthodes annotées Et l'un d'eux est @Neveraskagain (Manifeste.Permission. [Permission_YOU_WANT]) Comme ci-dessous P>

@OnNeverAskAgain(Manifest.permission.[permission_you_want])
void showNeverAsk() {  
   // handle here
}  

0 commentaires