首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IllegalArgumentException readExceptionFromParcel

IllegalArgumentException readExceptionFromParcel
EN

Stack Overflow用户
提问于 2011-06-15 04:15:47
回答 3查看 10.6K关注 0票数 6

我从我的一个用户那里得到了这个错误,我不知道如何修复它……

java.lang.IllegalArgumentException DatabaseUtils.readExceptionFromParcel()

代码语言:javascript
复制
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函数,它(我认为)导致了force close:

代码语言:javascript
复制
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,但这并没有改变任何事情……有谁有线索吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-15 06:11:46

电话查询URI有问题。从异常文本看,它似乎缺少电话号码。您确定数字不为null且不为空吗?

票数 12
EN

Stack Overflow用户

发布于 2013-01-29 04:54:10

掩码号码可能会发生这种情况。http://code.google.com/p/gtalksms/issues/detail?id=27

票数 2
EN

Stack Overflow用户

发布于 2014-02-21 11:01:29

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

代码语言:javascript
复制
@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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6349566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档