Android中的可检查联系人列表

时间:2013-11-25 17:09:18

标签: android preference

我想创建一个应该由应用程序存储的可检查联系人列表,允许用户对某些联系人进行检查,并存储用户的首选项。 我想知道是否可以使用首选项活动将所有联系人列为复选框, 或者自定义列表视图是否允许我保存应用程序的用户首选项?

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码获取联系人数据:

        Cursor cursor = getContentResolver().query(
                        ContactsContract.Contacts.CONTENT_URI, null, null,
                        null, null);

                cursor.moveToFirst();

                if (cursor.getCount() > 0) {
                    do {

                        try {
                            contactId = cursor
                                    .getString(cursor
                                            .getColumnIndex(ContactsContract.Contacts._ID));

                            Uri contactUri = ContentUris.withAppendedId(
                                    Contacts.CONTENT_URI,
                                    Long.parseLong(contactId));
                            Uri dataUri = Uri.withAppendedPath(contactUri,
                                    Contacts.Data.CONTENT_DIRECTORY);

                            Cursor phones = getContentResolver()
                                    .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                            null,
                                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                                    + " = " + contactId,
                                            null, null);
                            if (phones.getCount() > 0) {

                                try {
                                    Cursor nameCursor = getContentResolver()
                                            .query(dataUri,
                                                    null,
                                                    Data.MIMETYPE + "=?",
                                                    new String[] { StructuredName.CONTENT_ITEM_TYPE },
                                                    null);
                                    nameCursor.moveToFirst();
                                    do {

                                        String firstName = nameCursor
                                                .getString(nameCursor
                                                        .getColumnIndex(Data.DATA2));

                                        String displayname = cursor
                                                .getString(cursor
                                                        .getColumnIndex(Contacts.DISPLAY_NAME_ALTERNATIVE));

                                        lastName = nameCursor
                                                .getString(nameCursor
                                                        .getColumnIndex(Data.DATA3));

                                    } while (nameCursor.moveToNext());
                                    nameCursor.close();

                                } catch (Exception e) {

                                }
                            }
                            phones.close();
                        }

                        catch (Exception t) {

                        }

                    } while (cursor.moveToNext());

                   }

获取联系人姓名列表或您需要的任何内容后,您需要创建自定义适配器来显示此数据,创建自定义列表时,请参阅此linkthis

//////////////////////

编辑:

您可以使用以下代码获取电话号码:

    String number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));