#android #contacts
#Android #Контакты
Вопрос:
Я работаю над приложением для Android, которое имеет дело с контактом.
Я использовал следующий код в Android 1.6, и он работает нормально.
public static Uri getProfilepicture(Activity activity, String address)
{
Uri personUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, address);
Cursor phoneCursor = activity.getContentResolver().query(personUri,PHONE_PROJECTION, null, null, null);
if (phoneCursor.moveToFirst())
{
int indexPersonId = phoneCursor.getColumnIndex(Phones.PERSON_ID);
long personId = phoneCursor.getLong(indexPersonId);
phoneCursor.close();
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, personId);
return uri;
}
return null;
}
и получение фотографии в растровом изображении, как
Bitmap bm = People.loadContactPhoto(activity,getProfilepicture(activity, ConNum, R.drawable.artist, null);
Может ли кто-нибудь предложить код для Android 2.1, пожалуйста?
Комментарии:
1. Люди «Этот класс устарел. см. ContactsContract ‘
2. спасибо за комментарий, Селвин. я знаю, что должен использовать ContactsContract. в api 2.1 я пытаюсь с этим справиться, но не получаю выходных данных. если у вас есть какой-либо рабочий пример этого, пожалуйста, предоставьте мне.
3. @milind Я думаю, что вот редкий пример использования ContactsContract …. Вы, возможно, видели.
Ответ №1:
Спасибо друзьям, которые пытаются мне помочь. я решил проблему, выполнив следующий код.
public static Bitmap getContactPhoto(Activity activity,int contactId)
{
Bitmap photo = null;
final String[] projection = new String[] {
Contacts.PHOTO_ID // the id of the column in the data table for the image
};
final Cursor contact = activity.managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,Contacts._ID "=?",new String[]{String.valueOf(contactId)},null);
if(contact.moveToFirst())
{
final String photoId = contact.getString(
contact.getColumnIndex(Contacts.PHOTO_ID));
if(photoId != null)
{
photo = queryContactBitmap(activity,photoId);
}
else
{
photo = null;
}
contact.close();
}
contact.close();
return photo;
}
private static Bitmap queryContactBitmap(Activity activity,String photoId)
{
final Cursor photo = activity.managedQuery(Data.CONTENT_URI,new String[] {Photo.PHOTO},Data._ID "=?",new String[]{photoId},null);
final Bitmap photoBitmap;
if(photo.moveToFirst())
{
byte[] photoBlob = photo.getBlob(
photo.getColumnIndex(Photo.PHOTO));
photoBitmap = BitmapFactory.decodeByteArray(
photoBlob, 0, photoBlob.length);
}
else
{
photoBitmap = null;
}
photo.close();
return photoBitmap;
}
при этом просто передайте объект activity и ContactID. и сохраните его в bitmam.