CallLog内容提供者最多返回500个结果

时间:2013-09-28 13:17:40

标签: android android-contentprovider calllog

出于某种原因,如果我查询CallLog Content提供程序,我会得到最多500个结果。 此外,似乎我只能在一个月前获得结果(当我的设备手机应用程序显示我目前大约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个条目。

这让我有一个问题:原生手机应用程序(在我的情况下,三星的手机应用程序)如何显示更多数千个条目?

1 个答案:

答案 0 :(得分:0)

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