リスト ビューで電話連絡先のリストを表示する必要がある UI を構築しています。
と を使用 ContactsContract.Data
しCursorLoader
てデータをロードし、カーソルをカスタム アダプター ( から拡張SimpleCursorAdapter
) にバインドしています。
ここでの問題は、SIM 連絡先を除外する方法がわからないことです。私が持っているテスト電話には、電話と SIM に同一の連絡先があり、リストビューに重複したエントリが表示されます。SIM を取り外すと、重複がなくなります。
SIM 連絡先を除外するにはどうすればよいですか? 1 つのクエリを使用してデータを取得する方法を探しています。
これは、現時点でデータをロードする方法です。
Uri queryUri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Data.MIMETYPE,
ContactsContract.RawContacts.ACCOUNT_TYPE };
selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = 1 AND IS_PRIMARY = 1 AND MIMETYPE = '" + Phone.CONTENT_ITEM_TYPE + "'";
cursorLoader = new CursorLoader(getActivity(), queryUri, projection, selection, null, ContactsContract.Contacts.DISPLAY_NAME);
cursor = cursorLoader.loadInBackground();
//setup adapter, bind to listview etc..