我正在尝试检索具有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)
我做错了什么?
答案 0 :(得分:0)
System.Runtime.Serialization.dll