2

私のコードでは、電話連絡先のみを表示する必要があります。以前の投稿に従いましたが、電話連絡先と 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 オブジェクトであり、リスト (ArrayList である listContact) に表示されます。

私のアプリケーションは電話の連絡先でのみ機能し、sim の連絡先では機能しないため、これは私にとって非常に重要です。

4

1 に答える 1

3

カーソルをこれに置き換えて、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の他のいくつかを除外する必要がある場合があります。https://stackoverflow.com/a/13656077/262462を参照してください。com.anddroid.contacts.simvnd.sec.contact.sim

于 2013-03-08T09:33:44.870 に答える