Код не работает в Android 2.1

#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.