- //设置头像(<SPAN>Android SDK 1.6以后联系人格式进行的升级,以下为设置联系人头像的代码,兼容目前所有SDK</SPAN>)
//设置头像(Android SDK 1.6以后联系人格式进行的升级,以下为设置联系人头像的代码,兼容目前所有SDK)
- 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);
- }
- }
- ---------------------------------------------------------------------------------------
- //获取头像
- private final static boolean OldSDK = (System.getSDKVersionNumber()< 5 )? true : false;
- public static Bitmap getContactPhoto(Context context, long pid,int defaultIco){
- if (OldSDK){
- Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, pid);
- return People.loadContactPhoto(context, uri,defaultIco, null);
- }
- else
- return getContactPhoto5(context, pid, defaultIco);
- }
- private static Bitmap getContactPhoto5(Context c, long personId,int defaultIco){
- byte[] data = new byte[0];
- Uri u = Uri.parse("content://com.android.contacts/data");// AND (is_super_primary =1 or is_primary=1)
- String where ="raw_contact_id = " + personId + " AND mimetype ='vnd.android.cursor.item/photo'";
- Cursor cursor = c.getContentResolver().query(u, null, where, null, null);
- if (cursor.moveToFirst()) {
- data = cursor.getBlob(cursor.getColumnIndex("data15"));
- }
- cursor.close();
- if (data ==null ||data.length == 0){
- return BitmapFactory.decodeResource(c.getResources(), defaultIco);
- }
- else
- return BitmapFactory.decodeByteArray(data, 0, data.length);
- }
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);
}
}
---------------------------------------------------------------------------------------
//获取头像
private final static boolean OldSDK = (System.getSDKVersionNumber()< 5 )? true : false;
public static Bitmap getContactPhoto(Context context, long pid,int defaultIco){
if (OldSDK){
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, pid);
return People.loadContactPhoto(context, uri,defaultIco, null);
}
else
return getContactPhoto5(context, pid, defaultIco);
}
private static Bitmap getContactPhoto5(Context c, long personId,int defaultIco){
byte[] data = new byte[0];
Uri u = Uri.parse("content://com.android.contacts/data");// AND (is_super_primary =1 or is_primary=1)
String where ="raw_contact_id = " + personId + " AND mimetype ='vnd.android.cursor.item/photo'";
Cursor cursor = c.getContentResolver().query(u, null, where, null, null);
if (cursor.moveToFirst()) {
data = cursor.getBlob(cursor.getColumnIndex("data15"));
}
cursor.close();
if (data ==null ||data.length == 0){
return BitmapFactory.decodeResource(c.getResources(), defaultIco);
}
else
return BitmapFactory.decodeByteArray(data, 0, data.length);
}
- -------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
- //修改 (SDK--->2.1)
//修改 (SDK--->2.1)
- <SPAN style="LINE-HEIGHT: 22px; WHITE-SPACE: normal; COLOR: #333333; FONT-SIZE: 14px">public static void setContactPhoto(ContentResolver c, byte[] bytes,</SPAN>
public static void setContactPhoto(ContentResolver c, byte[] bytes,
long personId) {
ContentValues values = new ContentValues();
int photoRow = -1;
String where = ContactsContract.Data.RAW_CONTACT_ID + " = " + personId
+ " AND " + ContactsContract.Data.MIMETYPE + "=='"
+ ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
+ "'";
Cursor cursor = c.query(ContactsContract.Data.CONTENT_URI, null, where,
null, null);
int idIdx = cursor.getColumnIndexOrThrow(ContactsContract.Data._ID);
if (cursor.moveToFirst()) {
photoRow = cursor.getInt(idIdx);
}
cursor.close();
values.put(ContactsContract.Data.RAW_CONTACT_ID, personId);
values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, bytes);
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
if (photoRow >= 0) {
c.update(ContactsContract.Data.CONTENT_URI, values,
ContactsContract.Data._ID + " = " + photoRow, null);
} else {
c.insert(ContactsContract.Data.CONTENT_URI, values);
}
}
-=================================================================================
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();
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
);
}
}