显示的android两个SIM卡和手机中的联系人(android showing both sim

2019-08-17 00:10发布

在我的代码,我应该只显示手机中的联系人:我跟以前的帖子,但我还是同时显示手机和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卡通讯录好这对我来说真的很重要。

Answer 1:

你可以尝试用它来取代你的光标以排除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_TYPEcom.anddroid.contacts.simvnd.sec.contact.sim ,看到https://stackoverflow.com/a/13656077/262462



文章来源: android showing both sim and phone contacts