Android 開発者の皆様、こんにちは。1つ質問を教えてください。やっています
Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,CONTACT_PROJECTION, n" _id = _id ) GROUP BY ("+ Calls.NUMBER, null, "cnt DESC");
Android 2.3.3 では正常に動作しますが、Android 4.03 では GROUP BY クエリがサポートされなくなったため、Android 4.03 ではクラッシュします。( https://stackoverflow.com/questions/8837544/android-ics-sqlite-error )
そこで、サンプル コードを使用して URI Contacts.CONTENT_URI への生の SQL クエリを作成することにしました。
ContentProviderClient client = getContentResolver().acquireContentProviderClient(AUTHORITY);
SQLiteDatabase dbHandle= ((MyContentProvider)client.getLocalContentProvider()).getDbHandle();
Cursor cursor = dbHandle.rawQuery("SELECT _id, date, duration, number, type, name, numbertype, COUNT(*) as cnt FROM calls WHERE ( 1=1 ) GROUP BY (number) ORDER BY cnt DESC", null);
または
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.query(db, projectionIn, selection, selectionArgs, groupBy, having, sortOrder)
groupBy パラメータを持つもの。
しかし、2番目のケースで CONTENT_URI または CONTENT_URI のデータベース名から dbHandle を取得する方法がわかりません。
前もって感謝します!