出于某种原因,如果我查询 CallLog Content 提供程序,我会得到最多 500 个结果。此外,我似乎直到 1 个月前才得到结果(当时我的设备电话应用程序显示我大约 8 个月)。
我用谷歌搜索了它,但我发现的只是'将'CallLog.Calls'存储到另一个表中',它没有提供任何解决方案。
这是我的代码:
String[] strFields = {
android.provider.CallLog.Calls.NUMBER,
android.provider.CallLog.Calls.DURATION,
android.provider.CallLog.Calls.DATE,
};
Cursor cursor = MainApplication.getAppContext().getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI,
strFields,
null,
null,
null
);
if (cursor != null) {
Log.d("aaa", cursor.getCount());
...
}
...
我尝试添加更高的限制,但没有任何改变。
有谁知道为什么我的结果是有限的?
编辑:
在Android代码中挖掘了一点之后,我在android.provider.CallLog中找到了一个名为removeExpiredEntries ()的方法
private static void removeExpiredEntries(Context context) {
final ContentResolver resolver = context.getContentResolver();
resolver.delete(CONTENT_URI, "_id IN " +
"(SELECT _id FROM calls ORDER BY " + DEFAULT_SORT_ORDER
+ " LIMIT -1 OFFSET 500)", null);
}
每次将呼叫添加到日志时都会调用它:/ 这意味着呼叫日志内容提供程序最多可以返回 500 个条目。
这给我留下了一个问题:本机电话应用程序(在我的例子中是三星的电话应用程序)如何显示似乎还有数千个条目?