Как читать андроид сим контакты и телефон контакты отдельно

Я хочу читать все контакты сим и телефонные контакты отдельно в Android. Я искал это и нашел много людей, имеющих проблему с этим, и я не мог найти никакого решения еще. Мне здесь нравится какой-то ответ, но он не работает для меня. Когда я проверяю это, это дает мне контакты Google:

RawContacts.ACCOUNT_TYPE + " = 'com.google' "

Но когда я проверяю это, это не дает мне контакты сима:

RawContacts.ACCOUNT_TYPE + " = 'com.android.contacts.sim' "

Затем я обнаружил, что RawContacts - это контакты, созданные с помощью адаптера синхронизации. Это может быть проблемой. Так может кто-нибудь сказать мне, как получить

  • Все симконтакты
  • Все телефонные контакты

Благодарю.

2 ответа

Решение

для телефонных контактов

try
{
    String[] PROJECTION=new String[] {Contacts._ID,
        Contacts.DISPLAY_NAME,
        Phone.NUMBER
    };

    Cursor c=managedQuery(Phone.CONTENT_URI,
        PROJECTION, null, null, null);
        if (c.moveToFirst()) {
            String ClsPhonename = null;
            String ClsphoneNo = null;

            do 
            {
                ClsPhonename = c.getString(c.getColumnIndex(Contacts.DISPLAY_NAME));
                ClsphoneNo = c.getString(c.getColumnIndex(Phone.NUMBER));


                ClsphoneNo.replaceAll("\\D", "");
                ClsPhonename=ClsPhonename.replaceAll("&", "");
                ClsPhonename.replace("|","");
                String ClsPhoneName=ClsPhonename.replace("|","");

                }   

            } while(c.moveToNext());
        }

для сим-контактов

String ClsSimPhonename = null; String ClsSimphoneNo = null;

    Uri simUri = Uri.parse("content://icc/adn"); 
    Cursor cursorSim = this.getContentResolver().query(simUri,null,null,null,null);

    while (cursorSim.moveToNext()) 
    {      
        ClsSimPhonename =cursorSim.getString(cursorSim.getColumnIndex("name"));
        ClsSimphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number"));
        ClsSimphoneNo.replaceAll("\\D","");
        ClsSimphoneNo.replaceAll("&", "");
        ClsSimPhonename=ClsSimPhonename.replace("|","");
            System.out.println("SimContacts"+ClsSimPhonename);
            System.out.println("SimContactsNo"+ClsSimphoneNo);
            dts.createDatabse("MyCellFamily",getApplicationContext());

    }        
}
catch(Exception e)
{
    e.printStackTrace();
}

Я нашел много телефонов использовать "com.android.contacts.sim" в RawContacts.ACCOUNT_TYPE для сим-контактов. Но я также обнаружил, что HTC использует "com.anddroid.contacts.sim" (сорфографической ошибкой для Android). Это странно.

Другие вопросы по тегам