2012-04-23 2 views
0

Можно создать дубликат:
How can I programmatically add a contact?Программным добавил Контакт не отображается в Android

С помощью поиска Google я был в состоянии добавить контакт в моей Android Application. В то время как это работает, я не могу видеть, что добавленный Контакт в телефоне Список контактов (Телефонная книга).

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

Я следил за this example в настройке моего кода.

ответ

3

Вставьте новый контакт в телефонной книге с помощью следующего метода:

public void insert(String lastName, String firstName, String phoneNumber, String photo_uri) 
{ 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); 
    builder.withValue(RawContacts.ACCOUNT_TYPE, null); 
    builder.withValue(RawContacts.ACCOUNT_NAME, null); 
    ops.add(builder.build()); 

    // Name 
    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
    builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
    builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 
    builder.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, lastName); 
    builder.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, firstName); 
    ops.add(builder.build()); 

    // Number 
    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
    builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
    builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
    builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber); 
    builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME); 
    ops.add(builder.build()); 

    // Picture 
    try 
    { 
     Bitmap mBitmap = Media.getBitmap(context.getContentResolver(), Uri.parse(photo_uri)); 

     ByteArrayOutputStream image = new ByteArrayOutputStream(); 
     mBitmap.compress(Bitmap.CompressFormat.JPEG , 100, image); 

     builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
     builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
     builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); 
     builder.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray()); 
     ops.add(builder.build()); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

    // Add the new contact 
    ContentProviderResult[] res; 
    try 
    { 
     res = KramerApplication.getInstance().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     if (res != null && res[0] != null) 
     { 
      String uri = res[0].uri.getPath().substring(14); 
      return new Integer(uri).intValue(); // Book ID 
     } 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

Использование:

int book_id = insert("Doe", "John", "111-222-333", "content://com.my.package/drawable/photo");

book_id является строка идентификатор вашей записи.

+1

Комментарий или пояснение данного кода помогут читателям. –

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