2

リスト ビューで電話連絡先のリストを表示する必要がある UI を構築しています。

と を使用 ContactsContract.DataCursorLoaderてデータをロードし、カーソルをカスタム アダプター ( から拡張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..
4

1 に答える 1

1

理解した:

基本的に必要なものは次のとおりです。

Uri queryUri = ContactsContract.Contacts.CONTENT_URI;

これは、ユーザーのアドレス帳の設定に従います。ユーザーが SIM 連絡先の表示を無効にしている場合、クエリの結果から SIM 連絡先が自動的に除外されます。

これが他の誰かに役立つことを願っています。

于 2013-08-18T02:37:57.847 に答える