Je travaille sur une application simple qui parcourt les contacts de l'utilisateur. Malheureusement, je continue à avoir l'erreur suivante:
Java.lang.SecurityException: Permission Denial: reading com.Android.providers.contacts.HtcContactsProvider2 uri content://com.Android.contacts/contacts from pid=27455, uid=10171 requires Android.permission.READ_CONTACTS
Mon fichier manifeste ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.Android.helloMaps"
Android:versionCode="1"
Android:versionName="1.0">
<uses-sdk Android:minSdkVersion="8" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
<application Android:icon="@drawable/icon"
Android:label="@string/app_name"
Android:debuggable="true">
<uses-library Android:name="com.google.Android.maps" />
<activity Android:name=".MapsActivity"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.NoTitleBar">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
J'essaie de regarder mes contacts en:
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
J'ai essayé d'ajouter <uses-permission Android:name="Android.permission.READ_CONTACTS" />
ou Android:permission="Android.permission.READ_CONTACTS"
à <application>
ou <activity>
, mais les deux ne fonctionnaient pas.
Je suis à court d'options, est-ce que quelqu'un sait ce qui me manque ici?
le <uses-permission>
devrait être contenu dans l'élément <manifest>
. Voir Structure du fichier manifeste . Donc, essayer de le mettre dans <application>
ou <activity>
ne fonctionnera pas. Mouvement désespéré: essayez de déplacer <uses-sdk>
avant <application>
<uses-sdk Android:minSdkVersion="8" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
De même, si vous pouvez tester sans les autres autorisations, supprimez-les.
EDIT: Pouvez-vous vérifier s'il s'agit de votre ligne TOP dans votre fichier manifeste:
<?xml version="1.0" encoding="utf-8"?>
J'étais totalement coincé là-dessus jusqu'à ce que je lise cet article sur la gestion des autorisations, à partir du SDK 23. Astuce:
Si le paramètre targetSdkVersion de l'application est défini sur une valeur inférieure à 23, il est supposé que l'application n'est pas encore testée avec le nouveau système d'autorisation et qu'elle adopte le même comportement. une fois installé!
J'ai ouvert mon fichier gradle.build
et changé targetSdkVersion 23
en targetSdkVersion 22
, et maintenant tout fonctionne très bien! Je finirai par trouver le temps d'intégrer le nouveau système d'autorisations et de revenir à targetSdkVersion 23
, ce qui est probablement la réponse la plus correcte. Ceci est un raccourci temporaire.
Aucune de ce qui précède n'a aidé. La solution est assez simple ... vous aurez besoin d'une demande d'autorisation d'exécution.
avec ou sans placer l'autorisation dans votre manifeste, vous devrez demander cette autorisation à l'utilisateur à la volée .
if( getApplicationContext().checkSelfPermission( Manifest.permission.READ_CONTACTS ) != PackageManager.PERMISSION_GRANTED )
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_CONTACTS}, resultValue);
alors seulement après l'approbation, vous pourrez interroger le numéro de téléphone/nom du contact, etc.
Essayez ceci dans votre méthode de création
ActivityCompat.requestPermissions (this, nouveau String [] {Manifest.permission.READ_CONTACTS}, 1);
J'ai eu le même problème et aucune des solutions que j'ai lues n'a aidé à le résoudre avant d'ajouter la permission WRITE_EXTERNAL_STORAGE
avec la permission READ_CONTACTS
.
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
J'ai rencontré ce problème aujourd'hui et aucune des solutions ci-dessus n'a fonctionné pour moi.
Le problème a finalement été lié à mon Eclipse. Ce que j'avais écrit dans le manifest.xml
et ce qui se trouvait dans l'onglet Permissions
n'étaient pas les mêmes. J'avais l'autorisation READ_CONTACTS
dans mon manifest.xml
, mais READ_PROFILE
était à sa place sous l'onglet autorisation.
Je sais que c'est un vieux fil, mais j'espère que si quelqu'un a le même problème que moi, il tombera par hasard dessus.
Merci!