2011-06-14 159 views
6

我得到这个错误从我的用户之一,我有)不知道如何解决它......抛出:IllegalArgumentException readExceptionFromParcel

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) 

这是联系我们funcion我打电话给哪个(我认为)导致这个部队关闭:

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; 
    } 

我也试图改变Phone.CONTENT_ FILTER_URI到PhoneLookup.CONTENT_FILTER_URI,但它没有改变任何东西......有没有人有线索?

回答

11

电话查询URI存在问题。从例外文本看起来它缺少电话号码。你确定号码不是空的,而不是空的?

+0

我试过了几个不同的联系人。与名称和号码,只有名称,只有号码...在我的欲望什么也没有发生......因为我没有看到这些用户有什么电话,我不能真正告诉你如何创建错误或在哪些手机上崩溃。 – user754730 2011-06-15 08:44:17

+0

任何想法的人?有没有解决方法或什么? – user754730 2011-06-20 12:33:05

+0

从日志“content://com.android.contacts/phone_lookup/”中找不到电话号码。在方法开始时加一个断言来防止空或空的电话号码 – 2011-06-21 02:42:23

1

我不知道是否有人仍然需要这个答案,但我试过,直到我得到它。问题是,有时,当您扩展PhoneStateListener类或传递最后一个来电号码时,来电号码为null。我改变了我的代码,这一点,它工作得很好

@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); 
     } 
    } 

...这个解决方案是here

相关问题