2014-10-18 109 views
0

我正在查詢android手機通話記錄數據庫中的通話日期。在閱讀了一些文章後,他們說這需要在我的查詢方法中進行一些注入。如何查詢按日期分組的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)。有沒有什麼辦法可以對呼叫日誌數據庫進行原始查詢,因爲我想用我自己的查詢來編寫查詢來分組日期。

回答

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"` 
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"); 
+0

我已經嘗試過它。但是,這不起作用。因爲,生成的查詢包含WHERE子句。 – 2014-10-18 07:33:52

+0

@ThihaZaw你有沒有嘗試過我的答案? – GrIsHu 2014-10-18 09:04:14

+0

@GrlsHu我試了你的答案。但是,它不工作。仍然得到例外。 – 2014-10-18 09:50:57