如何使用group by date查询android调用日志数据

时间:2014-10-18 05:50:40

标签: android sqlite

我在Android手机的通话记录数据库中查询通话日期。在阅读了一些文章之后,他们说这需要在我的查询方法中进行一些注入。

Cursor cursor = activity.getContentResolver().query(
                    CallLog.Calls.CONTENT_URI,
                    new String[] { CallLog.Calls.DATE},
                    "" + ") GROUP BY (" + CallLog.Calls.DATE,
                    null, CallLog.Calls.DATE + " DESC");

当我运行我的应用程序时,我收到以下错误消息。

near ")": syntax error (code 1): , while compiling: SELECT date FROM calls WHERE ((() GROUP BY (date) AND ((type != 4)))) ORDER BY date DESC

实际上,我无法弄清楚这个查询是如何构建的,以及为什么((类型!= 4))过滤器被附加到GROUP BY子句。我目前正在使用(compileSdkVersion 19,minSdkVersion 10和targetSdkVersion 19)。有没有办法对Call Log Database进行原始查询,因为我想用自己的查询来编写查询组日期。

2 个答案:

答案 0 :(得分:1)

CursorLoader cl = new CursorLoader(getActivity(), CallsQuery.CONTENT_URI, CallsQuery.PROJECTION, null, null,            CallLog.Calls.DEFAULT_SORT_ORDER);

您可以使用DEFAULT_SORT_ORDER

date DESC

public static final String DEFAULT_SORT_ORDER

The default sort order for this table
Constant Value: `"date DESC"`

答案 1 :(得分:0)

只需从查询中删除额外的括号,然后按以下方式更改:

   Cursor cursor =mActivity.getContentResolver().query(
            CallLog.Calls.CONTENT_URI,
            new String[] { CallLog.Calls.DATE},
            " GROUP BY " + CallLog.Calls.DATE,null,CallLog.Calls.DATE + " DESC");