android显示sim和手机联系人

时间:2013-02-16 20:40:15

标签: android android-contacts

在我的代码中,我应该只显示手机通讯录:我之前的帖子,但我仍然显示手机和SIM卡联系人。这是我的代码:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

String columIndex = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
String columIndexId = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String numIndex = ContactsContract.CommonDataKinds.Phone.NUMBER;

Cursor cursor = getContentResolver().query(uri, null, null, null,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");

if(cursor!=null){
    while(cursor.moveToNext()) {
        ContactInfo ci = new ContactInfo();
        ci.setIdContact(Integer.parseInt(cursor.getString(cursor.getColumnIndex(columIndexId))));
        ci.setName(cursor.getString(cursor.getColumnIndex(columIndex)));
        ci.setNumberTel(cursor.getString(cursor.getColumnIndex(numIndex)));
        //if(!cursor.getString(cursor.getColumnIndex(columIndex)).equalsIgnoreCase(nome))
        listContact.add(ci);
    }
    cursor.close();

}

这些都是ContactInfo对象,它们将显示在列表中(listContact,它是一个ArrayList)。

这对我来说非常重要,因为我的应用程序仅适用于手机联系人,而不适用于SIM卡联系人。

1 个答案:

答案 0 :(得分:3)

您可以尝试用此替换Cursor以排除sim:

上的联系人
import android.provider.ContactsContract.RawContacts;

Cursor cursor = getContentResolver().query(
    RawContacts.CONTENT_URI,
    new String[] { RawContacts._ID, RawContacts.ACCOUNT_TYPE },
    RawContacts.ACCOUNT_TYPE + " <> 'com.android.contacts.sim' AND "
        + RawContacts.ACCOUNT_TYPE + " <> 'com.anddroid.contacts.sim' AND " // HTC
        + RawContacts.ACCOUNT_TYPE + " <> 'vnd.sec.contact.sim' AND "
        + RawContacts.ACCOUNT_TYPE + " <> 'USIM Account' ",
        null,
        null);

我没有尝试过,从https://stackoverflow.com/a/4409453/262462

修改

注意:在某些手机上,您可能需要排除少数其他RawContacts.ACCOUNT_TYPE com.anddroid.contacts.simvnd.sec.contact.sim,请参阅https://stackoverflow.com/a/13656077/262462