我正在构建一个用户界面,需要在列表视图中显示电话联系人列表。
我在用着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..
弄清楚了:
基本上你需要的是:
Uri queryUri = ContactsContract.Contacts.CONTENT_URI;
这将遵循用户的地址簿设置 - 如果用户已禁用显示 SIM 联系人,查询结果将自动排除 SIM 联系人。
希望这对其他人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)