2011-06-14 15 views
6

मैं अपने उपयोगकर्ताओं में से एक से इस त्रुटि हो गया और i) किसी सुराग इसे ठीक करने के ...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) 

यह है contactExists 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

फोन क्वेरी यूआरआई के साथ कुछ गड़बड़ है। अपवाद पाठ से ऐसा लगता है कि इसमें फ़ोन नंबर गुम है। क्या आप निश्चित हैं कि संख्या शून्य नहीं है और खाली नहीं है?

+0

मैंने इसे कुछ अलग संपर्कों के साथ करने की कोशिश की। नाम और संख्या के साथ, केवल नाम, केवल संख्या ... मेरी इच्छा पर कुछ भी नहीं हुआ ... चूंकि मैं नहीं देखता कि उन उपयोगकर्ताओं के पास कौन सा फ़ोन है, मैं वास्तव में आपको यह नहीं बता सकता कि त्रुटि कैसे बनाई गई थी या किस फोन पर यह दुर्घटनाग्रस्त हो गया था। – user754730

+0

कोई भी विचार किसी को भी? क्या कोई कामकाज या कुछ है? – user754730

+0

लॉग से "सामग्री: //com.android.contacts/phone_lookup/" फ़ोन नंबर गुम है। शून्य या खाली फोन नंबर –

1

मुझे नहीं पता कि किसी को अभी भी इस जवाब की आवश्यकता है, लेकिन मैंने इसे तब तक करने की कोशिश की जब तक मुझे यह नहीं मिला। समस्या यह है कि कभी-कभी, आने वाली संख्या null होती है जब आप या तो PhoneStateListener कक्षा का विस्तार करते हैं, या अंतिम आने वाली संख्या को पार करते समय। मैं इस के लिए मेरे कोड बदल गया है, और यह ठीक

@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 है।