Accorder l'autorisation nécessaire pour EXTERNAL_STORAGE dans Android M?
Seront les autorisations Android WRITE_EXTERNAL_STORAGE et READ_EXTERNAL_STORAGE déclencheur de la nouvelle accorder l'autorisation boîte de dialogue d'Android M?
Je suis d'accord avec Guillaume Perrot 's réponse. J'ai rencontré la même question quand j'écris la permission de READ_WRITE_EXTERNAL_STORAGE dans AndroidManifest.xml
avec l'absence d'autorisations d'apparaître dans l'app par défaut , les gens ont besoin de basculer le bouton de basculement de stockage dans l'application des autorisations.Puis-je modifier mon targetSdkVersion dans build.gradle à moins de 23(MNC) et nombre d'autres liées à sdkVersion, l'application installée avec les autorisations sur.
L'autre façon est d'écrire requestpermission fonction du lieu que vous avez besoin de la permisson. Le code est comme suit:
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED){//do the things} else {
requestPermissions(newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE },AnyNumber);
Parce que j'ai moins de 15 réputation donc je ne peux pas voter pour la Guillaume Perrot 's réponse.Il suffit d'utiliser cette façon de montrer mon idée.
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED) est remplie, même si je révoquer l'autorisation dans les paramètres. Ensuite, l'application échoue...
Ma réponse est basée sur mes tests sur M Preview du SDK de la version 2, à l'aide d'un émulateur.
Si vous ciblez MNC aperçu de l'API de niveau, WRITE_EXTERNAL_STORAGE n'est pas accordé par défaut et sera le cadre de la nouvelle dynamique de l'autorisation de l'API.
Vous verrez le stockage de l'autorisation comme un bouton à bascule dans la nouvelle application d'autorisations de menu dans les paramètres de l'appareil, et vous pouvez les utiliser Activity.requestPermissions pour afficher la fenêtre contextuelle pour cette autorisation.
Toutefois, si vous ciblez les api de niveau < MNC, il ne sera pas classé comme dangereux autorisation, et donc ne peut être accordée sans un moyen pour l'utilisateur de désactiver (ne s'affiche pas dans les paramètres d'autorisation), et vous ne serez pas en mesure de compiler du code en utilisant Activity.requestPermissions de toute façon comme la preview du SDK applique minSdkVersion="MNC" à utiliser les nouvelles Api.
C'est un comportement différent de celui de l'emplacement des autorisations: quel que soit le niveau API vous cible, l'utilisateur sera en mesure de tourner emplacement dans le menu autorisation.
Pour le menu autorisation elle-même, l'autorisation de la bascule de l'état est activée par défaut si:
Cible API de niveau < MNC.
Cible API level = RNM, mais la mise à niveau d'application sur le périphérique à partir d'une installation précédente où la cible API de niveau était inférieur à MNC.
Sinon, vous verrez la bascule en tant que par défaut.
Espère que cela aide.
Et la différence observée entre le stockage et les autorisations de position est clairement sans-papiers... je n'ai aucune idée si c'est par conception, une documentation bug ou d'une plate-forme de bug.
Limitée Autorisations Accordées au Moment de l'Installation: Lorsque l'utilisateur installe ou met à jour l'application, le système des subventions de l'application de toutes les autorisations de l'application des demandes qui relèvent de PROTECTION_NORMAL.
Parce READ_EXTERNAL_STORAGE est en train de tomber sous PROTECTION_NORMAL , il ne déclenchent pas la boîte de dialogue.
Mais parce que le niveau de WRITE_EXTERNAL_STORAGE est PROTECTION_DANGEROUS, il va tomber sous ce comportement comme décrit dans les docs:
Utilisateur Accorde des Autorisations au Moment de l'Exécution: Lorsque l'application demande une autorisation, le système affiche une boîte de dialogue à l'utilisateur, puis les appels de l'application de la fonction de callback à notifier, si l'autorisation a été accordée. Si un utilisateur accorde une autorisation, l'application est donné toutes les autorisations que l'autorisation de la fonctionnelle de la zone qui ont été déclarées dans le manifeste de l'application
Android docs disent par exemple que " l'internet de l'autorisation est accordée sans problème mais maintenant c'est dangereux, donc il y a seulement deux hypothèse: la documentation est complètement faux ou il y a un changement dans Android m code source sur le niveau de protection. Je pense que les docs n'est pas complètement clair à ce sujet. La seule explicite, c'est que "le système des subventions de l'application de toutes les autorisations de l'application des demandes qui relèvent de PROTECTION_NORMAL." Je viens de chechek, android, et m certaines autorisations a été revu à la baisse, de sorte que votre réponse est complètement faux Tout d'abord j'ai dit au sujet de la lecture Permmision que c'est au niveau normal, la moitié est juste pour vous... la Seconde où vous avez trouvé de données sur la permmision niveau en M? Google est votre ami
De stockage de l'autorisation relève de dangereux niveau de protection, de Sorte que tous les dangereux protection des autorisations de niveau ne sera pas accordée au moment de l'installation dans Android M, si l'Application cible SDK est fixé à 23. Ils seront donnés au moment de l'exécution.
Et oui, ces autorisations peuvent être révoqué au moment de l'exécution.
Pas de dialogue autorisation ne sera pas déclenché automatiquement, vous devez faire une demande à l'aide de l'API comme requestPermissions() méthode pour montrer que le dialogue native.
Veuillez vérifier le niveau de danger permission liste ici
Je suis d'accord avec Guillaume Perrot 's réponse. J'ai rencontré la même question quand j'écris la permission de
READ_WRITE_EXTERNAL_STORAGE
dansAndroidManifest.xml
avec l'absence d'autorisations d'apparaître dans l'app par défaut , les gens ont besoin de basculer le bouton de basculement de stockage dans l'application des autorisations.Puis-je modifier mon
targetSdkVersion
dansbuild.gradle
à moins de23(MNC)
et nombre d'autres liées àsdkVersion
, l'application installée avec les autorisations sur.L'autre façon est d'écrire
requestpermission
fonction du lieu que vous avez besoin de la permisson. Le code est comme suit:Parce que j'ai moins de 15 réputation donc je ne peux pas voter pour la Guillaume Perrot 's réponse.Il suffit d'utiliser cette façon de montrer mon idée.
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED)
est remplie, même si je révoquer l'autorisation dans les paramètres. Ensuite, l'application échoue...OriginalL'auteur Elf Xu
J'ai résolu d'ajouter ce si vérifier la version pour Android M
OriginalL'auteur Samuel Ivan
Ma réponse est basée sur mes tests sur M Preview du SDK de la version 2, à l'aide d'un émulateur.
Si vous ciblez
MNC
aperçu de l'API de niveau,WRITE_EXTERNAL_STORAGE
n'est pas accordé par défaut et sera le cadre de la nouvelle dynamique de l'autorisation de l'API.Vous verrez le stockage de l'autorisation comme un bouton à bascule dans la nouvelle application d'autorisations de menu dans les paramètres de l'appareil, et vous pouvez les utiliser
Activity.requestPermissions
pour afficher la fenêtre contextuelle pour cette autorisation.Toutefois, si vous ciblez les api de niveau < MNC, il ne sera pas classé comme dangereux autorisation, et donc ne peut être accordée sans un moyen pour l'utilisateur de désactiver (ne s'affiche pas dans les paramètres d'autorisation), et vous ne serez pas en mesure de compiler du code en utilisant
Activity.requestPermissions
de toute façon comme la preview du SDK appliqueminSdkVersion="MNC"
à utiliser les nouvelles Api.C'est un comportement différent de celui de l'emplacement des autorisations: quel que soit le niveau API vous cible, l'utilisateur sera en mesure de tourner emplacement dans le menu autorisation.
Pour le menu autorisation elle-même, l'autorisation de la bascule de l'état est activée par défaut si:
Sinon, vous verrez la bascule en tant que par défaut.
Espère que cela aide.
OriginalL'auteur Guillaume Perrot
Selon les docs:
Parce READ_EXTERNAL_STORAGE est en train de tomber sous PROTECTION_NORMAL , il ne déclenchent pas la boîte de dialogue.
Mais parce que le niveau de WRITE_EXTERNAL_STORAGE est PROTECTION_DANGEROUS, il va tomber sous ce comportement comme décrit dans les docs:
Voici les sources pour le niveau de protection:
liste détaillée
Je pense que les docs n'est pas complètement clair à ce sujet. La seule explicite, c'est que "le système des subventions de l'application de toutes les autorisations de l'application des demandes qui relèvent de PROTECTION_NORMAL."
Je viens de chechek, android, et m certaines autorisations a été revu à la baisse, de sorte que votre réponse est complètement faux
Tout d'abord j'ai dit au sujet de la lecture Permmision que c'est au niveau normal, la moitié est juste pour vous... la Seconde où vous avez trouvé de données sur la permmision niveau en M?
Google est votre ami
OriginalL'auteur yshahak
Selon Android docs vous n'avez pas besoin de demander la permission à propos de lire et d'écrire de stockage externe.
Edit: dans le dernier Android M de presse vous avez besoin de demander les autorisations lire et écrire
OriginalL'auteur greywolf82
De stockage de l'autorisation relève de dangereux niveau de protection, de Sorte que tous les dangereux protection des autorisations de niveau ne sera pas accordée au moment de l'installation dans Android M, si l'Application cible SDK est fixé à 23. Ils seront donnés au moment de l'exécution.
Et oui, ces autorisations peuvent être révoqué au moment de l'exécution.
Pas de dialogue autorisation ne sera pas déclenché automatiquement, vous devez faire une demande à l'aide de l'API comme requestPermissions() méthode pour montrer que le dialogue native.
Veuillez vérifier le niveau de danger permission liste ici
OriginalL'auteur dex