2013-07-18 2 views
1

Использование следующего кода Контакты добавляются в SIM-карту, но при перезапуске он исчезает. Еще одно замечание: перед перезагрузкой, если мы отредактируем этот SIM-контакт (который добавлен программно), приложение для подключения к Android отключится, но Contact будет отредактирован, а при перезапуске он не исчезнет.Как исправить исчезновение программно добавленных контактов SIM после перезагрузки телефона?

На устройствах, отличных от Samsung, совсем не отображается контакт в приложении Android по умолчанию. но я вытащил базу данных контактов и проверил. Он содержит контакты, которые я вставил программно. Я проверил это на LG Optimus.

Может кто-нибудь помочь, что все остальные столбцы мне нужно рассмотреть или какие-либо проблемы с существующими столбцами. Спасибо заранее.

Проверено это на Samsung Devices, Europa, S3.

private void addSIMContacts() { 
    // TODO Auto-generated method stub 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    int rawContactInsertIndex = ops.size(); 

    ops.add(ContentProviderOperation 
      .newInsert(RawContacts.CONTENT_URI) 
      .withValue(RawContacts.ACCOUNT_TYPE, 
        new String("vnd.sec.contact.sim")) 
      .withValue(RawContacts.ACCOUNT_NAME, 
        new String("vnd.sec.contact.sim")) 
      .withValue(RawContacts.SOURCE_ID, new String("1")).build()); 
    ops.add(ContentProviderOperation 
      .newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 
        rawContactInsertIndex) 
      .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
      .withValue(Phone.NUMBER, "9X-XXXXXXXXX").build()); 
    ops.add(ContentProviderOperation 
      .newInsert(Data.CONTENT_URI) 
      .withValueBackReference(Data.RAW_CONTACT_ID, 
        rawContactInsertIndex) 
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(StructuredName.DISPLAY_NAME, "om").build()); 
    try { 
     ContentProviderResult[] res = getContentResolver().applyBatch(
       ContactsContract.AUTHORITY, ops); 
    } catch (RemoteException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (OperationApplicationException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

ответ

2

Пожалуйста, найдите прилагаемый фрагмент кода. Он работал для большинства случаев.

void insertSIMContact() { 
    Uri simUri = Uri.parse("content://icc/adn"); 

    ContentValues values = new ContentValues(); 

    String name[] = {"a", "b", "c", "d",}; 
    int number[] = {1,2,3,4}; 

    for (int i=0; i<name.length; i++) { 
    values.put("tag", name[i]); 
       values.put("number", number[i]); 
       getContentResolver().insert(simUri, values); 
       getContentResolver().notifyChange(simUri, null); 
      } 
    } 
+0

Спасибо .. Его работа ... :) Проверено на устройствах, кроме Samsung, а также на Grand и S3 ... – AdiAtAnd

Смежные вопросы