Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何仅显示手机联系人(不包括SIM卡联系人)_Android_Contactscontract_Android Cursorloader_Rawcontacts - Fatal编程技术网

Android 如何仅显示手机联系人(不包括SIM卡联系人)

Android 如何仅显示手机联系人(不包括SIM卡联系人),android,contactscontract,android-cursorloader,rawcontacts,Android,Contactscontract,Android Cursorloader,Rawcontacts,我正在构建一个UI,需要在列表视图中显示电话联系人列表 我正在使用contacts contract.Data和cursorload加载数据,然后将光标绑定到自定义适配器(扩展自SimpleCursorAdapter) 这里的问题是,我不知道如何过滤SIM卡联系人;我拥有的测试手机在手机和SIM卡上有相同的联系人,这会导致listview有重复的条目。如果我取下SIM卡,复制品就会消失 如何筛选SIM卡联系人?我正在寻找一种使用1查询获取数据的方法 这是我目前加载数据的方式: Uri query

我正在构建一个UI,需要在列表视图中显示电话联系人列表

我正在使用
contacts contract.Data
cursorload
加载数据,然后将光标绑定到自定义适配器(扩展自
SimpleCursorAdapter

这里的问题是,我不知道如何过滤SIM卡联系人;我拥有的测试手机在手机和SIM卡上有相同的联系人,这会导致listview有重复的条目。如果我取下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卡联系人


希望这对其他人有帮助。

没有人吗?那么这很复杂吗?