我从我的一个用户那里得到了这个错误,我不知道如何解决它…
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)
这是我正在调用的contactExists函数(我认为)导致强制关闭:
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); try { if (cur.moveToFirst()) { return true; } } finally { if (cur != null) cur.close(); } } catch (IllegalArgumentException iae) { return false; } return false; }
我也尝试将Phone.CONTENT_FILTER_URI更改为PhoneLookup.CONTENT_FILTER_URI,但它没有改变任何东西……有没有人有线索?
解决方法
电话查询URI有问题.从例外文本看起来它缺少电话号码.你确定号码不是空的而不是空的吗?