103 votes

Comment l'autorisation peut-elle être vérifiée au moment de l'exécution sans lancer SecurityException?

Je crée une fonction qui peut obtenir/définir une ressource à partir de la SD et si elle ne trouve pas de sd puis prendre à partir de l'Actif et, si possible, écrire l'actif de retour à SD
Cette fonction peut vérifier par l'invocation de méthode si SD est monté et accessible...

boolean bSDisAvalaible = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

Mes conçu la fonction peut être utilisée à partir d'une application(projet) à l'autre (avec ou sans android.la permission.WRITE_EXTERNAL_STORAGE)

Ensuite, je tiens à vérifier si l'application en cours a cette permission sans jouer avec SecurityException.

Existe-t-elle un "bon" moyen de consulter les autorisations définies au moment de l'exécution ?

210voto

inazaruk Points 37760

Vous pouvez utiliser la fonction Context.checkCallingorSelfPermission() pour cela. Voici un exemple:

 private boolean checkWriteExternalPermission()
{

    String permission = "android.permission.WRITE_EXTERNAL_STORAGE";
    int res = getContext().checkCallingOrSelfPermission(permission);
    return (res == PackageManager.PERMISSION_GRANTED);            
}
 

52voto

user123321 Points 2862

C'est une autre solution aussi

 PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(
    android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
    context.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
   // do stuff
}
 

20voto

MrAppa Points 43

Vous pouvez également utiliser ceci:

 private boolean doesUserHavePermission()
{
    int result = context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
    return result == PackageManager.PERMISSION_GRANTED;
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X