获取联系人头像
獲取聯系人頭像??
people_id) {
String photo_id = null;
String selection1 =
ContactsContract.Contacts._ID + " = " + people_id;
Cursor cur1 =
getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null,
selection1, null,
null);
if (cur1.getCount() > 0)
{
cur1.moveToFirst();
photo_id =
cur1.getString(cur1
.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
//System.out.println("photo_id:"
+ photo_id);
}
String[] projection = new String[]
{
ContactsContract.Data.DATA15
};
String selection =
ContactsContract.Data._ID + " = " + photo_id;
Cursor cur =
getContentResolver().query(
ContactsContract.Data.CONTENT_URI, projection,
selection, null,
null);
cur.moveToFirst();
byte[] contactIcon =
cur.getBlob(0);
System.out.println("conTactIcon:" + contactIcon);
if
(contactIcon == null) {
return null;
} else {
return
contactIcon;
}
}
以下代碼將字節數組轉化成Bitmap對象,然后再ImageView中顯示出來
private
ImageView image;
byte[] photo = getPhoto(contactId);
Bitmap map =
BitmapFactory.decodeByteArray(photo,
0,
photo.length);
image.setImageBitmap(map);
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);
}
}
?
?
public byte[] getPhoto(Stringpeople_id) {
String photo_id = null;
String selection1 =
ContactsContract.Contacts._ID + " = " + people_id;
Cursor cur1 =
getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null,
selection1, null,
null);
if (cur1.getCount() > 0)
{
cur1.moveToFirst();
photo_id =
cur1.getString(cur1
.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
//System.out.println("photo_id:"
+ photo_id);
}
String[] projection = new String[]
{
ContactsContract.Data.DATA15
};
String selection =
ContactsContract.Data._ID + " = " + photo_id;
Cursor cur =
getContentResolver().query(
ContactsContract.Data.CONTENT_URI, projection,
selection, null,
null);
cur.moveToFirst();
byte[] contactIcon =
cur.getBlob(0);
System.out.println("conTactIcon:" + contactIcon);
if
(contactIcon == null) {
return null;
} else {
return
contactIcon;
}
}
以下代碼將字節數組轉化成Bitmap對象,然后再ImageView中顯示出來
private
ImageView image;
byte[] photo = getPhoto(contactId);
Bitmap map =
BitmapFactory.decodeByteArray(photo,
0,
photo.length);
image.setImageBitmap(map);
?
?
?
===============通過代碼設置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);
}
}
?
總結
- 上一篇: 开始学java咯!~~~
- 下一篇: B1有个自定义表操作慢