我在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进行原始查询,因为我想用自己的查询来编写查询组日期。
答案 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");