我有一个应用程序需要获取给定联系人的照片。我有联系人的电话号码,如果联系人的照片存在,是否可以通过 ContentResolver 或任何其他形式通过电话号码检索?我一直在寻找,但没有找到答案。
我真的想强调使用电话号码获取联系人照片(如果存在)的重要性。谢谢你。
我有一个应用程序需要获取给定联系人的照片。我有联系人的电话号码,如果联系人的照片存在,是否可以通过 ContentResolver 或任何其他形式通过电话号码检索?我一直在寻找,但没有找到答案。
我真的想强调使用电话号码获取联系人照片(如果存在)的重要性。谢谢你。
好的,我终于想出了如何添加 Facebook 照片。此方法将通过电话号码添加您需要的 facebook 照片:
public Bitmap getFacebookPhoto(String phoneNumber) {
Uri phoneUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Uri photoUri = null;
ContentResolver cr = this.getContentResolver();
Cursor contact = cr.query(phoneUri,
new String[] { ContactsContract.Contacts._ID }, null, null, null);
if (contact.moveToFirst()) {
long userId = contact.getLong(contact.getColumnIndex(ContactsContract.Contacts._ID));
photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, userId);
}
else {
Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
return defaultPhoto;
}
if (photoUri != null) {
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(
cr, photoUri);
if (input != null) {
return BitmapFactory.decodeStream(input);
}
} else {
Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
return defaultPhoto;
}
Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
return defaultPhoto;
}
我不认为有一个简单的方法可以做到这一点。但是我想您可以通过电话上的“联系人”检查每个号码是否是您要匹配的号码。
由于无论如何这些数字都是无序的,因此无法提高效率。无序列表中的搜索是通过遍历它们来执行的,我建议你应该解决这个问题。除非 Android 将所有数字保存在我不知道的有序列表中。
您可以通过执行以下操作遍历联系人:
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while (cursor.moveToNext()) {
String contactId = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts._ID));
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Boolean.parseBoolean(hasPhone)) {
// You know it has a number so now query it like this
Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
while (phones.moveToNext()) {
String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
}
cursor.close();
这不是您任务的完整解决方案,但通过修改上面的代码,我认为您会完成。:-)