L'autorisation de Déni lorsque vous essayez d'accéder à vos contacts Android
Je suis en train d'essayer d'accéder à la liste des contacts sur l'appareil et, plus tard, de les afficher dans une liste, cependant lorsque j'essaie d'accéder à un curseur, j'obtiens une erreur que je suis en manque des autorisations pour READ_CONTACTS mais j'ai déjà donné des autorisations dans mon AndroidManifest.xml
Code où j'ai accès Contacts:
public void setupCursor() {
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(this, name + ": " + number, Toast.LENGTH_SHORT).show();
}
cursor.close();
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.github.brady131313.textback" >
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="21"/>
<uses-permission android:name="ANDROID.PERMISSION.READ_CONTACTS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ActivityMainSettings"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ActivityContactSelect"
android:label="Select Contacts">
</activity>
</application>
</manifest>
Journal Des Erreurs
05-17 17:12:41.544 20202-20202/io.github.brady131313.textback E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: io.github.brady131313.textback, PID: 20202
java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.brady131313.textback/io.github.brady131313.textback.ActivityContactSelect}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{14c069a9 20202:io.github.brady131313.textback/u0a90} (pid=20202, uid=10090) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2661)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5835)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{14c069a9 20202:io.github.brady131313.textback/u0a90} (pid=20202, uid=10090) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
at android.os.Parcel.readException(Parcel.java:1540)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3582)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:5081)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2926)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1452)
at android.content.ContentResolver.query(ContentResolver.java:468)
at android.content.ContentResolver.query(ContentResolver.java:428)
at io.github.brady131313.textback.ActivityContactSelect.setupCursor(ActivityContactSelect.java:46)
at io.github.brady131313.textback.ActivityContactSelect.onCreate(ActivityContactSelect.java:32)
at android.app.Activity.performCreate(Activity.java:6221)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2614)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5835)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
Toute aide sera appréciée!
La casse est importante. Regardez le message d'erreur et le cas c'est à l'aide de...
android.permission.READ_CONTACTS
ensuite, regardez votre manifeste... ANDROID.PERMISSION.READ_CONTACTS
.OriginalL'auteur Brady131313 | 2015-05-18
Vous devez vous connecter pour publier un commentaire.
Ajouter l'utilise-l'autorisation à l'extérieur de la balise application et de faire de l'android.l'autorisation minuscules. cela devrait corriger le problème, comme convenu ci-dessous dans les commentaires
<uses-permission />
à l'extérieur de la<application / >
élément. Le problème est avec la casse - oui, cela fait une différence.Oups, oui j'ai pensé que c'était si elle n'est pas en dehors de l'application de la balise 🙂
OriginalL'auteur
Depuis la nouvelle modèle d'autorisation d'exécution est introduit dans Android 6.0,
Espère que ce code vous sera utile si vous souhaitez utiliser modèle d'autorisation d'exécution. Vous pouvez également voir les détails de la mise en œuvre et d'obtenir le code source de ici.
OriginalL'auteur
j'ai eu le même genre de situation, ce que vous avez, fondamentalement, vous avez seulement besoin d'un changement "d'android.la permission.READ_CONTACTS" en minuscules, pour la première moitié, vous la permission.
OriginalL'auteur