通过代码设置Android联系人的头像
16lz
2021-01-23
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
);
}
}
更多相关文章
- Android设备预计将超微软
- 微软之鉴:Google不会将Android与Chrome OS融合?
- 【安卓】关于 Android 默认字体以及对比微软雅黑字体
- 微软发布 mircosft remote desktop for android
- Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azur
- 专利敲诈——微软对Android痛下杀手的背后
- 【更新】Google 与微软开始口水战
- 微软一年通过Android获得几十亿美元收入,没错,是微软!
- 不仅是微软和诺基亚,谁都无法 fork Android,因为它就没法 fork