2015-08-21 7 views
4

Я знаю, как получить профиль пользователя из ContentResolver. Если у меня есть растровое изображение, как я могу установить его как изображение профиля пользователя (замените его или установите его, если он не существует)?Обновление/настройка собственного профиля пользователя image

я загрузить профиль пользователя, как следующее:

Uri dataUri = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, ContactsContract.Contacts.Data.CONTENT_DIRECTORY); 
String[] selection = new String[] 
{ 
     ContactsContract.Profile._ID, 
     ContactsContract.Profile.DISPLAY_NAME, 
     ContactsContract.Profile.PHOTO_URI, 
     ContactsContract.Profile.LOOKUP_KEY 
}; 

Cursor cursor = MainApp.get().getContentResolver().query(
     dataUri, 
     selection, 
     null, 
     null, 
     null); 

if (cursor != null) 
{ 
    int id = cursor.getColumnIndex(ContactsContract.Profile._ID); 
    int name = cursor.getColumnIndex(ContactsContract.Profile.DISPLAY_NAME); 
    int photoUri = cursor.getColumnIndex(ContactsContract.Profile.PHOTO_URI); 
    int lookupKey = cursor.getColumnIndex(ContactsContract.Profile.LOOKUP_KEY); 

    try 
    { 
     if (cursor.moveToFirst()) 
     { 
      int phId = cursor.getInt(id); 
      mName = cursor.getString(name); 
      mImageUri = cursor.getString(photoUri); 
      mLookupKey = cursor.getString(lookupKey); 

      mExists = true; 
     } 
    } 
    finally 
    { 
     cursor.close(); 
    } 
} 
+0

Возможно, это поможет? http://stackoverflow.com/questions/17789256/change-contact-picture-programmatically – 2red13

+0

Спасибо. На самом деле, это как-то не так, как с контактами и профилем пользователя ... НО я просто понял, как это работает – prom85

+0

, вы хотите добавить растровое изображение к своему контакту? – Elltz

ответ

0

Вот как обновить или создать изображения профиля, на самом деле он работает так же, как обновление нормальных фотографий контактов. У меня была проблема где-то еще ...

Вместо использования моего UserProfile просто замените их и передайте необработанный идентификатор.

private static void updatePhoto(UserProfile profile, Bitmap bitmap, ...) 
{ 
    byte[] photo = ImageUtil.convertImageToByteArray(bitmap, true); 

    ContentValues values = new ContentValues(); 
    int photoRow = -1; 
    String where = ContactsContract.Data.RAW_CONTACT_ID + " = " + profile.getRawId() + " AND " + ContactsContract.Data.MIMETYPE + "=='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'"; 
    Cursor cursor = MainApp.get().getContentResolver().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, profile.getRawId()); 
    values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1); 
    values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, photo); 
    values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); 

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

    ... 
} 

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

  • Нет связанных вопросов^_^