CallLog.Calls.CACHED_PHOTO_URI始终返回空



我面临着非常关键的问题。我正在开发与呼叫日志相关的应用程序,但当我从内容提供商那里获得呼叫日志时,我找不到CallLog.Calls.CACHED_PHOTO_URI。它总是返回空的。我使用的是VIVO 1917(Funtouch OS_10(

public static void loadData(Context context) {
mainList = new ArrayList<>();

String projection[] = {"_id", CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.DURATION, CallLog.Calls.CACHED_PHOTO_URI, CallLog.Calls.TYPE, CallLog.Calls.CACHED_NAME};
ContentResolver contentResolver = context.getApplicationContext().getContentResolver();
Cursor cursor = contentResolver.query(CallLog.Calls.CONTENT_URI, projection, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
if (cursor == null) {
Log.d("CALLLOG", "cursor is null");
return;
}
if (cursor.getCount() == 0) {
Log.d("CALLLOG", "cursor size is 0");
return;
}
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
CallLogInfo callLogInfo = new CallLogInfo();
callLogInfo.setName(cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)));
callLogInfo.setNumber(cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)));
callLogInfo.setCallType(cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE)));
callLogInfo.setDate(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)));
callLogInfo.setDuration(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DURATION)));
String ss = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_PHOTO_URI));
Log.e("TAG", "  recent calls " + ss);
mainList.add(callLogInfo);
cursor.moveToNext();
}

cursor.close();
}

Android文档:

CACHED_PHOTO_URI添加到API 23级

与电话号码相关联的图片的缓存照片URI,如果它存在。

此值通常由用于缓存的拨号程序应用程序填写目的,因此不能保证存在,并且可能不是当前的如果与该号码相关联的联系信息已经改变。

这意味着根据不同于制造商的拨号程序,可能不存在此值。

你可能会有更好的机会,自己在联系人中查找号码/姓名,并通过这种方式获得图像。

最新更新