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?
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!
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
Pour Fragment
, utilisez getActivity().checkSelfPermission
Pour Activity
, utilisez this..checkSelfPermission
ou simplement checkSelfPermission
@SuppressLint("NewApi")
Je l'ai simplement utilisée en haut de ma page et cela fonctionne pour moi ...
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'}*