IllegalArgumentException readExceptionFromParcel

user754730 picture user754730 · Jun 14, 2011 · Viewed 10.2k times · Source

I got this Error from one of my users and i have NO clue how to fix it...

java.lang.IllegalArgumentException DatabaseUtils.readExceptionFromParcel()

java.lang.IllegalArgumentException: URI: content://com.android.contacts/phone_lookup/, calling user: com.piroja.contactpicker, calling package:com.piroja.contactpicker at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:144)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:245)
at com.piroja.contactpicker.ContactPicker.contactExists(ContactPicker.java:257)
at com.piroja.contactpicker.ContactPicker$6$1.onClick(ContactPicker.java:138)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
at dalvik.system.NativeStart.main(Native Method)

This is the contactExists funcion i'm calling which (i think) is causing the force close:

public boolean contactExists(Context context, String number) {
        try {
            Uri lookupUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri
                    .encode(number));
            String[] mPhoneNumberProjection = { Phone._ID, Phone.NUMBER,
                    Phone.DISPLAY_NAME };
            Cursor cur = context.getContentResolver().query(lookupUri,
                    mPhoneNumberProjection, null, null, null);
            try {
                if (cur.moveToFirst()) {
                    return true;
                }
            } finally {
                if (cur != null)
                    cur.close();
            }
        } catch (IllegalArgumentException iae) {
            return false;
        }
        return false;
    }

I have also tried to change Phone.CONTENT_FILTER_URI to PhoneLookup.CONTENT_FILTER_URI but it didn't change anything... Does anyone have a clue?

Answer

Nic Strong picture Nic Strong · Jun 15, 2011

There is something wrong with the phone query URI. From the exception text it looks like it is missing the phone number. Are you sure number is not null and not empty?