Android: доступ к контактам из памяти SIM-карты - PullRequest
1 голос
/ 16 августа 2010

Я пытался разработать приложение, которое требует доступа к контактам из памяти SIM-карты.Вот код, который я использовал, но есть исключение времени выполнения.

{  
    Uri simUri = Uri.parse("content://icc/adn");
    c=getContentResolver().query(simUri, null, null, null, null);
    startManagingCursor(c);        
    getContacts();
}

private void getContacts(){
    int i=0;
    do {
        // Get the field values
        names[i++] = c.getString(0);        
    } while (c.moveToNext());

Любые ответы и решения приветствуются.Наряду с этим, не могли бы вы сказать мне точный URI для доступа к контактам сим-карты?И есть ли название столбцов в таблице памяти контактов сима?

1 Ответ

0 голосов
/ 04 января 2015

Ваш контент URI для контактов сим выглядит правильно. Я использую следующий метод, чтобы получить контактную информацию-

private void allSIMContact() {
    try {
        String m_simPhonename = null;
        String m_simphoneNo = null;
        String m_id = null;

        Cursor cursorSim = this.getContentResolver().query(simUri,
                null, null, null, ContactsContract.Contacts.DISPLAY_NAME);

        Log.i("PhoneContact", "total: " + cursorSim.getCount());

        while (cursorSim.moveToNext()) {
            m_id = cursorSim.getString(cursorSim.getColumnIndex("_id"));
            m_simPhonename = cursorSim.getString(cursorSim
                    .getColumnIndex("name"));
            m_simphoneNo = cursorSim.getString(cursorSim
                    .getColumnIndex("number"));

            m_simphoneNo.replaceAll("\\D", "");
            m_simphoneNo.replaceAll("&", "");
            m_simPhonename = m_simPhonename.replace("|", "");

            ListData contact= new ListData(Integer.parseInt(m_id),
                    m_simphoneNo, m_simPhonename, "", "", "", false);
            arrayList.add(contact);

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

}
...