2016-12-10 2 views
0

J'essaie de faire une méthode qui vérifie les autorisations android. Mais quand je l'appelle, j'ai un avertissement de permission manquante.Android: Supprimer Avertissement sur l'appel de méthode

Voici une simplification de mon code:

public void lintTestMethod(){ 
    if(isPermissionGranted()) { 
     requiresLocationPermission(); 
    } 
} 

public boolean isPermissionGranted(){ 
    return true; 
} 

@RequiresPermission(anyOf = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}) 
public void requiresLocationPermission(){ 

} 

J'ai essayé d'ajouter:

@SuppressLint("MissingPermission") 
public boolean isPermissionGranted(){ 
    return true; 
} 

Mais il ne fonctionne pas (j'ai aussi essayé d'utiliser SuppressWarning).

Idéalement, je ne voudrais pas avoir à modifier la méthode lintTestMethod.

Est-ce que quelqu'un a une idée sur la façon de gérer cela?

+0

Ce n'est pas clair où vous ajoutez supprimer annotation – piotrpo

+0

Désolé, j'ai mis à jour le nom de l'appel de méthode. Cela devrait être plus clair maintenant. –

Répondre

0
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

Ajouter dans votre fichier AndroidManifest.xml.

+0

Merci pour votre réponse, mais ce n'est pas le problème que les autorisations sont présentes dans mon manifeste: s –

0

J'ai trouvé une solution de contournement à mon problème en lisant le code de charpie en vérifiant les permissions (Code). La solution consiste à nommer ma méthode appelée 'isPermissionGranted': 'check * Permission'. Ce n'est pas vraiment la solution que je cherchais mais ça marche. Si quelqu'un a une meilleure façon de le faire, je suis toujours intéressé.

Voici la partie intéressante du code:

String name = node.astName().astValue(); 
if ((name.startsWith("check") || name.startsWith("enforce")) && name.endsWith("Permission")) { 
     mChecksPermission = true; 
     mDone = true; 
} 
1

Vous placez la suppression à un mauvais endroit:

suppression de déclaration unique:

public void lintTestMethod(){ 
     if(isPermissionGranted()) { 
      //noinspection MissingPermission 
      requiresLocationPermission(); 
     } 
    } 

suppression de la plage de la méthode:

@SuppressWarnings("MissingPermission") 
public void lintTestMethod(){ 
    if(isPermissionGranted()) { 
     requiresLocationPermission(); 
    } 
} 

Cela peut être fait en utilisant le menu de réparation rapide d'Android Studio.