IllegalArgumentException readExceptionFromParcel

I received this error from one of my users, and I DO NOT know 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 function that I call, which (I think) invokes force:

 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 also tried changing Phone.CONTENT_FILTER_URI to PhoneLookup.CONTENT_FILTER_URI, but didn't change anything ... Does anyone have a clue?

+6
source share
3 answers

Something is wrong with the phone request URI. From the exception text, it looks like there is no phone number. Are you sure that the number is not empty, not empty?

+11
source

This can happen with a disguised number. http://code.google.com/p/gtalksms/issues/detail?id=27

+2
source

I don’t know if anyone else needs this answer, but I tried until I received it. The problem is that sometimes the incoming number is null when you extend the PhoneStateListener class or pass in the last incoming number. I changed my code to this and it worked great

 @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 is the solution here .

+1
source

Source: https://habr.com/ru/post/890541/


All Articles