根据其ID(Android)检索联系信息

时间:2017-07-17 09:29:54

标签: android

我正在尝试检索具有ID或其LOOKUP的特定联系信息(例如电话号码,姓名和电子邮件)。

首先,我使用以下代码阅读所有当前的联系人数据:

ContentResolver contentResolver = getContentResolver();
    cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,
            ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");

用户选择了特定联系人后,我将其id通过putExtra方法传递给另一个活动,该活动旨在阅读并显示该联系人的信息。

Intent contactDetails = new Intent(ContactsMainActivity.this, ContactsDialogActivity.class);
contactDetails.putExtra("ID",id);
startActivity(contactDetails);

问题出在这里。在ContactsDialogActivity中,我想通过id搜索来检索该联系人的信息:

cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, 
                ContactsContract.Contacts._ID + " = ?", new String[]{String.valueOf(id)},
                ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");

但是该查询总是抛出一个-1索引(它没有找到该ID),这会返回以下错误:

07-17 11:23:14.637 27073-27073/gib.bcimobilephone E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: gib.bcimobilephone, PID: 27073
                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{gib.bcimobilephone/gib.bcimobilephone.ContactsDialogActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
                                                                    at android.app.ActivityThread.-wrap14(ActivityThread.java)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                    at android.os.Looper.loop(Looper.java:154)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:6692)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
                                                                 Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
                                                                    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
                                                                    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                                                                    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
                                                                    at android.database.CursorWrapper.getString(CursorWrapper.java:137)
                                                                    at gib.bcimobilephone.ContactsDialogActivity.onCreate(ContactsDialogActivity.java:94)
                                                                    at android.app.Activity.performCreate(Activity.java:6912)
                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) 
                                                                    at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) 
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                    at android.os.Looper.loop(Looper.java:154) 
                                                                    at android.app.ActivityThread.main(ActivityThread.java:6692) 
                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

我做错了什么?

1 个答案:

答案 0 :(得分:0)

System.Runtime.Serialization.dll