私は連絡先を取得するために次のコードを持っていますcontent provider
String[] columns = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID,
ContactsContract.Contacts.PHOTO_ID };
Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,
columns, null, null, null);
そして私はこれを使って特定の連絡先のメールをIDで取得します:
Cursor emails = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = " + contact.getContactId(), null, null);
私の現在の実装は、カーソル内のすべての行を渡し、その電子メールを取得して、JavaオブジェクトのarrayListに格納します。
私ができるかどうか疑問に思っていたのは、コンテンツプロバイダーにクエリを実行し、メールアドレスがリストされているID/名前などの連絡先だけのカーソルを返すことです。
この方法では、連絡先リストを取得するための待機期間が長くなります。このリストをリストアダプタに使用しています。電子メールのある連絡先のみを取得できる場合は、リスト内のカーソルアダプターを使用できます。
このようなことは可能ですか?どうすればプロセスをスピードアップできますか?