Null pointer exception lors de la vérification de l'autorisation d'android.contenu.Contexte.checkPermission
J'ai besoin de vérifier les autorisations avant d'interroger le Android calendrier pour les événements.
Pour le faire, Android studio est l'avertissement que j'ai besoin de suivre un chèque avant de l'interrogation.
La génération automatique de code est de cette pièce:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
System.out.println("NO ACCESS TO CALENDAR!! Abort mission, abort mission!!");
}
Lorsque vous essayez de l'exécuter, j'ai cette erreur:
Tentative d'invoquer la méthode virtuelle 'int
android.contenu.Contexte.checkPermission(java.lang.String, int, int)'
sur un objet nul de référence
Il est donc clair que quelque chose est nul à ce point, et j'ai essayé d'obtenir le contexte de l'application, d'une manière différente, mais c'est toujours la même erreur.
Autre chose que j'ai essayé était présent code, qui est censé s'occuper de la cible inférieure à Android 6:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
Reçois toujours le même message d'erreur, quelqu'un peut-il m'aider?
- d'où appelez-vous cela? où cet objet se rapportent à
- il est une catégorie distincte, contrôleur: public class DummyData s'étend de l'Activité { .... }
- eh bien, vous devriez l'utiliser depuis AppCompatActivity classe pas la forme de l'Activité
- essayé, toujours la même erreur
Vous devez vous connecter pour publier un commentaire.
Qui ne va pas au travail.
Jamais étendre
Activity
sauf si c'est une activité réelle, celle qui vous permettra de vous inscrire dans le manifeste.Jamais créer une instance d'un
Activity
par un constructeur (par exemple, lanew DummyData()
que vous avez quelque part dans votre code). UtilisationstartActivity()
pour afficher une activité que vous avez enregistré dans le manifeste.Comme il est, alors que votre
DummyData
de la classe peut travailler à partir d'une compilation point de vue, il ne fonctionnera pas lors de l'exécution. UnActivity
doit être instancié par le cadre, et qui n'est pas le cas avec votreDummyData
.Passer un réel
Context
objet decheckSelfPermission()
, et passer un réelActivity
objet derequestPermissions()
. Dans ce cas, "réel" signifie "remis à vous de le cadre".checkSelfPermission()
.Utilisation (Activité)mContext au lieu de cela.
Vous devez écrire le droit de l'activité à la position "ce"
problème principal de l'activité.
Essayer d'écrire le code dans MainActivity et de test.