2011-12-20 2 views
3

Я пытаюсь добавить контакт в телефонную книгу.
Я был успешным: я добавил новый контакт и назначил ему номер мобильного телефона.Добавить фотографию в контакт

Теперь мне нужно добавить JPG, который у меня есть в каталоге ресурсов, в контакт как контактную фотографию.
Я ищу учебник, но не могу найти.

Мне нужно настроить таргетинг на старые телефоны, поэтому мне нужно использовать старый API контактов.

Может ли кто-нибудь помочь?

ContentValues contact = new ContentValues(); 

contact.put(People.NAME, "testContact"); 
Uri insertUri = activity.getContentResolver().insert(People.CONTENT_URI, contact); 

Uri phoneUri = Uri.withAppendedPath(insertUri, People.Phones.CONTENT_DIRECTORY); 
contact.clear(); 
contact.put(People.Phones.TYPE, People.TYPE_MOBILE); 
contact.put(People.NUMBER, "12128911"); 


updateUri = activity.getContentResolver().insert(phoneUri, contact); 

ответ

2

Я использую новый Api 8+, Вы также можете использовать это, (для поддержки нижней версии в манифесте использования файла minSDKVersion то, что вы хотите ..)

И что я делаю что-то подобное, (Я использую формат .PNG Bitmap)

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bm.compress(Bitmap.CompressFormat.PNG , 75, stream); 

operations.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValue(ContactsContract.Data.RAW_CONTACT_ID, 9) // here 9 is _ID where I'm inserting image 
      .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
      .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO,stream.toByteArray()) 
      .build()); 

    try { 
     stream.flush(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

это использование классов ContactsContract, которые недоступны для старых телефонов (<2.1) –

+0

Ya, я уже упоминал, его от 8+, вот почему я сказал вам использовать это и в манифесте поставить minsdkversion, что вы хотите. – user370305

+0

жаль, что я новичок в Android, будет ли работать для телефонов под управлением Android 1.6, 2.1 и т. Д.? Я думал, что эти библиотеки не были представлены до более поздней версии. –

0
final Uri uri = ContactsContract.Contacts.CONTENT_URI; 
    final String[] projection = new String[] { 
      ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.Contacts.PHOTO_URI 
    }; 
    //boolean mShowInvisible = false; 
    String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'"; 
    String[] selectionArgs = null; 
    final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

    m_curContacts = managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_URI}; 
    myadapter= new MySimpleCursorAdapter(this, R.layout.list_search, m_curContacts, fields, new int []{R.id.textView1,R.id.imageView1}); 

пожалуйста, попробуйте этот код может быть полезным для вас.