Ali*_*lin 3 android calllog contacts android-contacts
People.CONTENT_URI通过简单的查询, 查询联系人图片非常容易
People.loadContactPhoto(activity, ContentUris.withAppendedId(People.CONTENT_URI, contactId)
Run Code Online (Sandbox Code Playgroud)
因为我知道联系人ID.现在我需要在访问呼叫日志后做同样的事情.附:
String[] strFields = {
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.NUMBER,
};
String strUriCalls="content://call_log/calls";
Uri UriCalls = Uri.parse(strUriCalls);
Cursor cursorLog = this.getContentResolver().query(UriCalls, strFields, null, null, null);
Run Code Online (Sandbox Code Playgroud)
我从通话记录列表中,但我不能找到加载照片所需要的接触ID连接这一点任何方式.该应用程序适用于api level 4+.
任何帮助表示赞赏.谢谢.
在下面的Cristian的指导下,对我有用的解决方案是:
private long getContactIdFromNumber(String number) {
String[] projection = new String[]{Contacts.Phones.PERSON_ID};
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL,Uri.encode(number));
Cursor c = getContentResolver().query(contactUri, projection, null, null, null);
if (c.moveToFirst()) {
long contactId=c.getLong(c.getColumnIndex(Contacts.Phones.PERSON_ID));
return contactId;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
然后,您必须尝试使用查询的呼叫日志字段获取联系人ID.所以,你可以实现这样的事情:
private String getContactIdFromNumber(String number) {
String[] projection = new String[]{Contacts.Phones._ID};
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL,
Uri.encode(number));
Cursor c = getContentResolver().query(contactUri, projection,
null, null, null);
if (c.moveToFirst()) {
String contactId=c.getString(c.getColumnIndex(Contacts.Phones._ID));
return contactId;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用该联系人ID获取照片.在你的情况下这样的事情:
cursorLog.moveToFirst();
String number = cursorLog.getString(cursorLog.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
contactId = getContactIdFromNumber(number)
People.loadContactPhoto(activity, ContentUris.withAppendedId(People.CONTENT_URI, contactId);
// blah blah blah
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8002 次 |
| 最近记录: |