2011-09-30 79 views
0

我正在處理聯繫人的android應用程序。代碼在Android 2.1中不起作用

我在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的代碼嗎?

+0

People'此課程已棄用。 請參閱ContactsContract' – Selvin

+0

感謝評論selvin。我知道我必須使用ContactsContract。在api 2.1我試着用它,但沒有得到輸出。如果你有任何工作的例子,請提供給我。 – milind

+1

@milind我認爲[這裏](http://mobile.tutsplus.com/tutorials/android/android-essentials-using-the-contact-picker/)是使用ContactsContract ....的罕見例子。您可能已經看到。 – Hanry

回答

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; 
} 

在那只是傳遞活動對象和contactId。並將其存儲到bitmam中。

+0

謝謝米勒。它的作品像我的魅力。 –