【问题标题】:How to retrieve contact details for contact in android using LOOKUP KEY?如何使用 LOOKUP KEY 在 android 中检索联系人的详细联系信息?
【发布时间】:2019-05-12 15:35:07
【问题描述】:

我已尝试使用此代码,但无法从 onLoadFinished 方法检索数据,我得到 cursor.columnCount=7 和 cursor.getCount=0。每当我试图检索数据时 - cursor.getString(cursor.getColumnIndex(projection[0])) 我收到错误,说大小 0 和索引 0。

private static final String[] PROJECTION =
        {
                ContactsContract.Data.PHOTO_THUMBNAIL_URI,
                ContactsContract.Data.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Email.ADDRESS,
                ContactsContract.CommonDataKinds.Email.TYPE,
                ContactsContract.CommonDataKinds.Email.LABEL,
                ContactsContract.CommonDataKinds.Email.ADDRESS
        };
private static final int DETAILS_QUERY_ID = 0;

private static final String SELECTION = ContactsContract.Data.LOOKUP_KEY + " = ?";
private String[] selectionArgs = { "" };
String lookupKey;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    lookupKey=getArguments().getString("LOOKUPKEY");
    getLoaderManager().initLoader(DETAILS_QUERY_ID, null, this);

}


@Override
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
    selectionArgs[0] = lookupKey;

    return new CursorLoader(
            getActivity(),
            ContactsContract.Data.CONTENT_URI,
            PROJECTION,
            SELECTION,
            selectionArgs,
            null
    );

}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

}

@Override
public void onLoaderReset(@NonNull Loader<Cursor> loader) {

}

}

【问题讨论】:

  • 您的lookupKey 看起来如何?您可能错误地使用了错误的值,例如 lookupUri 或 contactId
  • 查找键给我的结果与联系人姓名相同
  • 那段代码肯定有错,贴出来
  • 看,当用户在 st 视图github.com/Thesohan/MyContactApp/blob/master/app/src/main/java/… 中单击特定行联系人时,我将查找键传递给详细信息片段
  • private static final int CONTACT_KEY_INDEX 更改为 3,而不是 1。这应该表示投影数组中 LOOKUP_KEY 的索引

标签: android cursor android-contacts loader


【解决方案1】:

我会用这个短语作为答案: 您的代码似乎是正确的,但传递的值不是 您将联系人姓名传递给片段,而不是传递 lookupKey。

private static final int CONTACT_KEY_INDEX 更改为3,而不是1。这应该代表投影数组中LOOKUP_KEY 的索引

【讨论】:

  • 抱歉回复晚了,非常感谢,您的第二条评论解决了我的问题,我已将 CONTACT_KEY_INDEX 更改为 3 并且繁荣,我得到了想要的结果。你拯救了我的一天。从昨晚开始我一直在努力解决这个问题
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多