【问题标题】:CallLog content provider returns 500 results maxCallLog 内容提供程序最多返回 500 个结果
【发布时间】:2013-09-29 03:56:59
【问题描述】:

出于某种原因,如果我查询 CallLog Content 提供程序,我最多会得到 500 个结果。 此外,我似乎直到 1 个月前才得到结果(当时我的设备电话应用程序显示我大约 8 个月)。

我用谷歌搜索了它,但我发现的只是“Store 'CallLog.Calls' into another table”,它没有提供任何解决方案。

这是我的代码:

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 个条目。

这给我留下了一个问题:本机手机应用程序(在我的例子中是三星的手机应用程序)如何显示似乎还有数千个条目?

【问题讨论】:

  • 有什么解决办法吗?如果你有请发布答案

标签: android android-contentprovider calllog


【解决方案1】:

所以通过查看日志,我得出的结论是,内容提供者确实在超过 500 条时删除了条目,而设备的 Phone 应用程序所做的是自己保存日志

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2011-10-18
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多