/ / Android 4.0. journal d'appels - securityexception - android

Android 4.0. journal d'appels - securityexception - android

String[] projection = new String[] {
CallLog.Calls._ID,
CallLog.Calls.CACHED_NAME,
CallLog.Calls.DATE,
CallLog.Calls.DURATION,
CallLog.Calls.NUMBER,
CallLog.Calls.TYPE
};

Cursor cursor = this.getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI, projection, null, null, null
);

Je souhaite obtenir des journaux d'appels sur mon application à partir deles journaux d'appels Android. Actuellement, j'ai travaillé sur la version Android 4.0. J'ai essayé le code ci-dessus et il va générer l'exception suivante. Quelle est la raison à ce sujet? J'ai placé <uses-permission android:name="android.permission.READ_CONTACTS" /> balise de permission dans le fichier manifeste.

01-19 21:25:52.819: E/AndroidRuntime(3280): FATAL EXCEPTION: main
01-19 21:25:52.819: E/AndroidRuntime(3280): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.phonelog/com.example.phonelog.MainActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.CallLogProvider from ProcessRecord{41397ff8 3280:com.example.phonelog/u0a10053} (pid=3280, uid=10053) requires android.permission.READ_CALL_LOG or android.permission.WRITE_CALL_LOG
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.os.Looper.loop(Looper.java:137)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.main(ActivityThread.java:5039)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at java.lang.reflect.Method.invokeNative(Native Method)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at java.lang.reflect.Method.invoke(Method.java:511)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at dalvik.system.NativeStart.main(Native Method)
01-19 21:25:52.819: E/AndroidRuntime(3280): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.CallLogProvider from ProcessRecord{41397ff8 3280:com.example.phonelog/u0a10053} (pid=3280, uid=10053) requires android.permission.READ_CALL_LOG or android.permission.WRITE_CALL_LOG
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.os.Parcel.readException(Parcel.java:1425)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.os.Parcel.readException(Parcel.java:1379)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2530)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.acquireProvider(ActivityThread.java:4460)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2002)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1101)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.content.ContentResolver.query(ContentResolver.java:356)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.content.ContentResolver.query(ContentResolver.java:315)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at com.example.phonelog.MainActivity.onCreate(MainActivity.java:32)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.Activity.performCreate(Activity.java:5104)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-19 21:25:52.819: E/AndroidRuntime(3280):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-19 21:25:52.819: E/AndroidRuntime(3280):     ... 11 more

Réponses:

6 pour la réponse № 1

Comme la trace d'erreur dit:

requires android.permission.READ_CALL_LOG or android.permission.WRITE_CALL_LOG

Vous devez également ajouter

<uses-permission android:name="android.permission.READ_CALL_LOG" />

ou

<uses-permission android:name="android.permission.WRITE_CALL_LOG" />

à votre liste de permissions utilise dans le AndroidManifest.

Bien sûr, si vous ne faites que lire, vous ne devriez pas non plus mettre la permission WRITE - READ suffira.


0 pour la réponse № 2

Cette erreur dit, "Je ne peux pas lire et écrire votrejournaux d’appel reçus, j’ai besoin d’autorisations pour lire et écrire les journaux d’appel de CallLogProvider ", le fournisseur CallLog contient des informations sur les appels passés et reçus.

Maintenant que vous devriez ajouter WRITE_CALL_LOG la permission de votre manifeste, si vous avez un bogue comme celui-ci,

java.lang.SecurityException: Refus de permission: fournisseur d'ouverture com.android.providers.contacts.CallLogProvider de ProcessRecord {42931860 15578: com.hirecraft.jugunoo.passenger / u0a10095} (pid = 15578, uid = 10095) requiert android.permission.READ_CALL_LOG android. permission.WRITE_CALL_LOG

<uses-permission android:name="android.permission.WRITE_CALL_LOG" />

Sinon, vous devez ajouter READ_CALL_LOG la permission de votre manifeste, si vous avez un bogue comme celui-ci,

java.lang.SecurityException: Refus de permission: lire com.android.providers.contacts.CallLogProvider uri content: // call_log / appels de pid = 16013, uid = 10095 requiert android.permission.READ_CALL_LOG ou grantUriPermission ().

<uses-permission android:name="android.permission.WRITE_CALL_LOG" />