IllegalArgumentException readExceptionFromParcel
Solution 1
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?
Solution 2
This can happen with masked number. http://code.google.com/p/gtalksms/issues/detail?id=27
Solution 3
I don't know if anyone still needs this answer, but I tried until I got it. The problem is that sometimes, the incoming number is null
when you either extend PhoneStateListener
class, or when passing the last incoming number. I changed my code to this, and it worked fine
@Override
public void onReceive(final Context context, final Intent intent) {
Log.d("APP", "ACTION:" + intent.getAction());
final String stringExtra = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(stringExtra)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "incoming,ringing:" + incomingNumber);
} else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "hanged" + incomingNumber );
} else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "answered" + incomingNumber );
}
}
… this solution is here.
user754730
Updated on June 07, 2022Comments
-
user754730 about 2 years
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?
-
user754730 about 13 yearsI tried it out with a few different contacts. With name & number, only name, only number... On my Desire nothing happened... Since i dont see what phone those users have, i can't really tell you how the error was created or on which phones it crashes.
-
Nic Strong about 13 yearsFrom the log "content://com.android.contacts/phone_lookup/" the phone number is missing. Put an assertion at the beginning of the method to guard against null or empty phone number
-
Tom about 12 yearsNot just null, but I catch the IllegalArgumentException on query() because there exist Android devices without this URI available! Not all of them support SMS/ MMS, especially with the dawn of tablets.