2014-12-10 55 views
0

如何查詢帶有LIMIT子句的CalendcarContract.Instances?帶限制的CalendarContract查詢

我想查詢「n」行限制的特定開始日期。

我已經試過是:

final Uri uri = Uri.parse(CalendarContract.Instances.CONTENT_URI + "/" + 
          Long.toString(startDate) + "/" + 
          Long.MAX_VALUE); 

final String sortOrder = Instances.BEGIN; 

String selection = " limit " + rows; 

Cursor cursor = context.getContentResolver().query (
    uri, 
    projection, 
    selection, 
    null, 
    sortOrder); 

這會產生一個錯誤,在日誌文件中報告:

...while compiling: SELECT Instances._id...WHERE (begin<=? AND end>=? AND (limit 1)... 

我相信錯誤是 「AND」 前(限1) 。該服務增加了,而不是我。那麼,是否還有另一個我可以使用的URI或其他技術?

注意:我特別想要實例版本,它將單個事件與循環事件結合在一起。

謝謝。

+1

的'ContentProvider' API不支持此。任何像你這樣的黑客入侵的解決方案都將是脆弱的,因爲它取決於提供者的具體實現方式,因操作系統級別和製造商而異。 – CommonsWare 2014-12-10 23:00:24

+0

同意。不幸的是,我將不得不忍受這種風險,或者放棄我需要的功能。 – 2014-12-16 18:43:28

回答

0

好的,沒關係,除非你有更好的答案。

我意識到這是一個更一般的URI問題,與CalendarContract沒有特別的關係。在搜索其他結果時,我發現一個建議將LIMIT n附加到排序子句中,例如

final String sortOrder = Instances.BEGIN + " limit " + 10; 

感謝 How to add limit clause using content provider