web-dev-qa-db-fra.com

Impossible de résoudre la méthode checkSelfPermission

J'essaie de préparer mon application pour Android 6 et je suis maintenant bloquée au point de devoir demander et vérifier les autorisations.

J'ai essayé ce qui suit à partir de la documentation:

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

Le problème est qu'Android Studio indique Cannot resolve method 'checkSelfPermission'.

J'ai déjà inclus appcompat et support lib. ContextCompat est connu d'AS, mais la méthode elle-même n'est pas connue. Je ne sais pas ce que je fais de mal - dans un autre projet, je peux écrire cette méthode et elle est reconnue.

TargetAPI est 23.

Est-ce que quelqu'un connaît une solution?

10
Phil

Oh mon Dieu - quelle erreur stupide.

AS a importé le supportlib sous forme de bocal et ce bocal datait de 2014. Je viens de remplacer le jarimport par la dépendance réelle et je sais que cela fonctionne.

Merci pour votre aide les gars!

15
Phil

Voici comment vous devez appeler dans différents scénarios,

En cas d'activité:

 ContextCompat.checkSelfPermission(MyActivity.this,
        Manifest.permission.WRITE_CALENDAR);

En cas de fragment:

 ContextCompat.checkSelfPermission(getActivity(),
        Manifest.permission.WRITE_CALENDAR);

En cas d'utilisation d'un contexte d'utilisation de classe d'utilitaire:

 ContextCompat.checkSelfPermission(context,
        Manifest.permission.WRITE_CALENDAR);

Commentaire ci-dessous pour plus d'informations

16
Manikanta

Pour Fragment, utilisez getActivity().checkSelfPermission

Pour Activity, utilisez this..checkSelfPermission ou simplement checkSelfPermission

3
Ali Akram
@SuppressLint("NewApi")

Je l'ai simplement utilisée en haut de ma page et cela fonctionne pour moi ...

1
Fahad Jadun

Aussi bête que cela puisse être, cela pourrait être au mauvais endroit. J'ai eu le même problème. La partie en gras est celle où j'avais initialement mis le code. La partie en italique indique où elle aurait dû aller

locationListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        Log.i("-----------", location.toString());
    }
    **if (ContextCompat.checkSelfPermission(this, 
        Manifest.permission.ACCESS_FINE_LOCATION) != 
            PackageManager.PERMISSION_GRANTED) {'some code'}**
    }; 'End of LocationListener method
    *if (ContextCompat.checkSelfPermission(this, 
        Manifest.permission.ACCESS_FINE_LOCATION) != 
        PackageManager.PERMISSION_GRANTED) { 'some code'}*
0
gavin