Android 查询系统联系人的信息 运行后图片
时间: 2024-11-18 15:27:36 浏览: 8
在Android中查询系统联系人信息通常涉及使用`ContactsContract` API,这是一个提供访问设备上联系人数据的标准接口。要获取联系人的图片,你需要通过`ContactPhoto`表获取。以下是简单的步骤:
1. 首先,添加权限到AndroidManifest.xml文件中:
```xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
```
2. 创建一个查询联系人和照片的方法,例如:
```java
public void getContactAndPicture(ContentResolver cr, String contactId, final OnContactImageCallback callback) {
Cursor cursor = null;
try {
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
cursor = cr.query(uri, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{contactId}, null);
if (cursor != null && cursor.moveToFirst()) {
int photoIndex = cursor.getColumnIndex(ContactsContract.Contacts.Photo_THUMBNAIL);
if (photoIndex != -1) {
int photoId = cursor.getInt(photoIndex);
Cursor photoCursor = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.query(cr, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?" + " AND _id=?",
new String[]{contactId, Integer.toString(photoId)}, null, null, null);
if (photoCursor != null) {
// 获取图片路径
String imagePath = photoCursor.getString(photoCursor.getColumnIndex(MediaStore.Images.Media.DATA));
callback.onContactImageLoaded(imagePath);
} else {
callback.onNoImageFound();
}
} else {
callback.onNoImageFound();
}
} else {
callback.onNoContactFound();
}
} finally {
if (cursor != null)
cursor.close();
}
}
```
这里假设有一个`OnContactImageCallback`接口用于回调图像加载结果。
阅读全文