【发布时间】:2012-05-10 00:35:24
【问题描述】:
我的应用程序(从 Android 2.3.3 开始)还必须支持 Android Ice Cream OS 4.0.3。 一切正常,但是当使用 GROUP BY 并且 SQL 抱怨这会导致崩溃时,来自 Content Resolver 的查询会在圆括号中产生奇怪的事情。在 Android API 级别 10 上看不到同样的情况。 也就是说,我的问题是:是否可以在冰淇淋上使用旧版本或 API(在我的情况下为 10)? 当然,如果我的问题有更好的解决方案,那将受到欢迎。
提前致谢。
代码(简化版)如下:
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.withAppendedPath( ContactsContract.Data.CONTENT_URI, "");
StringBuilder where = new StringBuilder();
allContactCursor = contentResolver.query( uri,
PROJECTION_CONTACT,
"1) GROUP BY ( "+ RawContacts.CONTACT_ID,
null,
ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE");
问题是 Ice Cream Sandwich 在编译 Sqlite 查询时不允许 GROUP BY 注入,相反,这适用于 Gingerbread 2.3.3。 如果没有 GROUP BY,联系人会根据联系人拥有的电话号码数量重复。
谢谢
【问题讨论】:
-
并非如此。设备上有一个版本。关于您的问题,如果您显示代码和崩溃日志会有所帮助。