5

名、姓、電話番号の両方を含む単一のカーソルを作成したいと考えています。これらの列は、ContactsContract で使用可能なコンテナーのいずれにも一緒に配置されていません。この情報を取得できる唯一の方法は、最初に名前のカーソルを取得し、次に連絡先ごとに個別のカーソルを作成して電話番号を取得することです。このソリューションでは、カーソルでアダプターを使用するだけでなく、データをローカル データ構造に読み取る必要があり、多くのパフォーマンス オーバーヘッドが発生します (電話番号の連絡先が 140 件までで約 5 秒)。

2 つのカーソルを作成してテーブルを結合する方法はありますか? それとも他に方法はありますか?私はこの2日間この質問に苦労しており、Googleで見つけたすべてのものを読んでいますが、実際には何もうまくいきません。これは本当に不可能ではありませんか?

前もって感謝します!

4

1 に答える 1

0

DISPLAY_NAMENUMBERから取得できますContactsContract.CommonDataKinds.Phone。これを試して:

Uri uri = Phone.CONTENT_URI;
String[] projection = new String[]
                {Phone.DISPLAY_NAME, Phone.NUMBER, Phone.CONTACT_ID, Phone._ID}
Cursor contactsCursor = getContentResolver().query(uri, projection, null, null, null);
于 2012-11-06T12:09:50.883 に答える