0

last days I'm getting really frustrated because often I get some permissions exceptions saying that I didn't define proper ones in manifest altough I did. For instance, I am trying to run some code:

ContentResolver contentResolver = getContentResolver();
        Cursor cursor = contentResolver.query(uri, new String[]{ContactsContract.Contacts._ID}, null, null, null);
        if(cursor.moveToFirst()) {
            Long contactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID));

            Cursor cursorPhones = contentResolver.query(Phone.CONTENT_URI,null,Phone.CONTACT_ID+"="+contactId,null,null);

        }

And the first query succeeds while the second one gives me the exception, here's stack trace:

12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime: FATAL EXCEPTION: main
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime: Process: com.example.pablo.appcontacts, PID: 4597
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/0r1-472955313F/1 flg=0x1 }} to activity {com.example.pablo.appcontacts/com.example.pablo.appcontacts.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=4597, uid=10061 requires android.permission.READ_CONTACTS, or grantUriPermission()
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.-wrap16(ActivityThread.java)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:  Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=4597, uid=10061 requires android.permission.READ_CONTACTS, or grantUriPermission()
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.os.Parcel.readException(Parcel.java:1599)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.content.ContentResolver.query(ContentResolver.java:491)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.content.ContentResolver.query(ContentResolver.java:434)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.example.pablo.appcontacts.MainActivity.getPhoneNumber(MainActivity.java:93)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.example.pablo.appcontacts.MainActivity.renderContact(MainActivity.java:69)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.example.pablo.appcontacts.MainActivity.onActivityResult(MainActivity.java:57)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.Activity.dispatchActivityResult(Activity.java:6428)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.-wrap16(ActivityThread.java) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
12-04 18:25:43.689 4597-4597/com.example.pablo.appcontacts E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
12-04 18:25:50.333 4597-4606/com.example.pablo.appcontacts W/CursorWrapperInner: Cursor finalized without prior close()
12-04 18:26:32.809 4597-4604/com.example.pablo.appcontacts W/art: Suspending all threads took: 14.922ms
12-04 18:28:27.460 4597-4604/com.example.pablo.appcontacts W/art: Suspending all threads took: 14.635ms

Did anybody go through similiar troubles? I had those with service and inner broadcast receiver while trying to read sms too...

EDIT

Here's the manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.pablo.appcontacts">

    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Target SDK is API 23:Android 6.0 (Marshmallow), min Sdk is 15:Android 4.0.3. The emulator is running at API 23: Android 6.0.

Paweł Poręba
  • 1,084
  • 1
  • 14
  • 37
  • "I didn't define proper ones in manifest altough I did" -- please post the manifest. Please indicate what your `targetSdkVersion` is. Please indicate what version of Android is running on the device or emulator you are using for testing. – CommonsWare Dec 04 '15 at 18:33
  • @CommonsWare thanks, I've edited the answer. – Paweł Poręba Dec 04 '15 at 18:42
  • Look into 'dangerous permissions' - since Marshmallow these need to be granted, and checked with a callback at runtime - have a look here: http://developer.android.com/training/permissions/requesting.html – Mark Dec 04 '15 at 19:53

0 Answers0