私のアプリケーション (Android 2.3.3 で開始) は、Android Ice Cream OS 4.0.3 もサポートする必要があります。すべて正常に動作しますが、GROUP BY が使用されている場合、Content Resolver からのクエリは丸括弧で奇妙なことを行い、SQL はそれについてクラッシュを引き起こします。同じことは 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 がないと、連絡先の電話番号の数に応じて連絡先が複製されます。
ありがとう