Android - создать новый контакт с фотографией из собственного приложения - PullRequest
1 голос
/ 08 февраля 2012

Я хочу открыть редактор родных контактов из моего собственного приложения через намерение, с данными, которые я положил намерением (используя функции putExtra). Я использую ContactsContract.Intents.Insert для передачи данных родным контактам. Я могу передать все контактные данные (адрес, имя, номер и т. Д.), Но не фотографию контакта.

Как мне это сделать (передавая либо фактические байты данных, либо URL)? Спасибо

1 Ответ

0 голосов
/ 08 февраля 2012

Вот фрагмент кода, который вы можете попробовать:

public static void setContactPhoto(ContentResolver c,
                                   byte[] bytes,
                                   long personId) {
  ContentValues values = new ContentValues();
  int photoRow = -1;
  String where = ContactsContract.Data.RAW_CONTACT_ID + " = "
    + personId + " AND " + ContactsContract.Data.MIMETYPE
    + "=='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'";
  Cursor cursor = c.query(ContactsContract.Data.CONTENT_URI,
                          null, where,
                          null, null);
  int idIdx = cursor.getColumnIndexOrThrow(ContactsContract.Data._ID);
  if (cursor.moveToFirst()) {
    photoRow = cursor.getInt(idIdx);
  }
  cursor.close();

  values.put(ContactsContract.Data.RAW_CONTACT_ID, personId);
  values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
  values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, bytes);
  values.put(ContactsContract.Data.MIMETYPE,
             ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);

  if (photoRow >= 0) {
    c.update(ContactsContract.Data.CONTENT_URI, values,
             ContactsContract.Data._ID + " = " + photoRow, null);
  } else {
    c.insert(ContactsContract.Data.CONTENT_URI, values);
  }
}

Вы можете прочитать все подробности из источника этой статьи.

...