Android获取联系人头像的方法

  private final static boolean OldSDK = (System.getSDKVersionNumber()< 5 )? true : false;

  public static void setPersonPhotoBytes(Context context,byte[] b, long persionID, boolean Sync)

  {

  if (OldSDK){

  Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI, persionID);

  People.setPhotoData(context.getContentResolver(), myPerson, b);

  if (! Sync){

  ContentValues values = new ContentValues();

  values.put("_sync_dirty", 0);

  context.getContentResolver().update(myPerson, values, null, null);

  }

  }

  else

  setContactPhoto5(context.getContentResolver(), b, persionID, Sync);

  }

  private static void setContactPhoto5(ContentResolver c, byte[] bytes,long personId, boolean Sync)

  {

  ContentValues values = new ContentValues();

  Uri u = Uri.parse("content://com.android.contacts/data");

  int photoRow = -1;

  String where ="raw_contact_id = " + personId + " AND mimetype ='vnd.android.cursor.item/photo'";

  Cursor cursor = c.query(u, null, where, null, null);

  int idIdx = cursor.getColumnIndexOrThrow("_id");

  if (cursor.moveToFirst()) {

  photoRow = cursor.getInt(idIdx);

  }

  cursor.close();

  values.put("raw_contact_id", personId);

  values.put("is_super_primary", 1);

  values.put("data15", bytes);

  values.put("mimetype","vnd.android.cursor.item/photo");

  if (photoRow >= 0) {

  c.update(u, values, " _id= " + photoRow, null);

  } else {

  c.insert(u, values);

  }

  if (! Sync){

  u = Uri.withAppendedPath(Uri.parse("content://com.android.contacts/raw_contacts"),

  String.valueOf(personId));

  values = new ContentValues();

  values.put("dirty", 0);

  c.update(u, values, null, null);

  }

  }