У меня проблема с получением фотографии контакта, которую вы видите в приложении обмена сообщениями и уведомлении о новой почте.Я посмотрел несколько примеров кодов, но у меня ничего не получилось, вот что у меня сейчас
, это должно получить фото URI и превратить его в растровое изображение для использования или, по крайней мере, кажется
public static Bitmap getContactImage(long id,Context context){
InputStream input = getPhoto(id,context);
if(input == null){
return null;
}
return BitmapFactory.decodeStream(input);
}
public static InputStream getPhoto(long contactId,Context context){
Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
InputStream in = null;
try{
in = context.getContentResolver().openInputStream(photoUri);
}catch(FileNotFoundException e){
Log.d(TAG, e.toString());
}
return in;
}
и вот как я звоню
long contactID = 0;
Bitmap image = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_contact_picture);
Cursor contact = context.getContentResolver().query(Data.CONTENT_URI,new String[] {Data.CONTACT_ID},Email.ADDRESS + "='" + from + "'",null,null);
if(contact.moveToFirst() && contact != null){
contactID = contact.getLong(0);
image = getContactImage(contactID,context);
}
Я получаю контактный идентификатор в порядке (проверяется путем поиска номера человека, который запрашивает), но затем он не находит фотографию контакта.Я знаю, что есть фотография, потому что я проверяю ее на себе, чтобы удостовериться, и у меня есть фотография контакта, таким образом, я не знаю, что еще я должен сделать.
Мне всегда очень неудобно перемещаться по поставщику контактов, потому что в этом так много всего.