根据原始联系人帐户类型查询android联系人
我正在尝试进行一个过滤联系人的查询,以便仅检索具有特定帐户类型的联系人 我使用以下在android 2.2上工作但在较新的android(如android 4.4.2)上不工作的代码来实现这一点: 问题是它在安卓2.2上运行,但在较新的安卓(安卓4.4.2)上它给我带来了一个例外。异常为:SQLiteException:没有这样的列:account\u type 我不知道为什么这在新的机器人上不起作用,但我认为这是一个安全特性 问题:对于我试图解决的这个问题,有什么解决方法吗 当前解决方案:我当前的解决方案是进行两次查询,一次在原始联系人表中,另一次在联系人表中。这种方法的问题在于它非常缓慢和笨拙,并且我不能使用好的游标加载程序来处理数据更改时的重新加载,这会导致非常丑陋和难以维护的代码 感谢所有的帮助根据原始联系人帐户类型查询android联系人,android,android-contentresolver,Android,Android Contentresolver,我正在尝试进行一个过滤联系人的查询,以便仅检索具有特定帐户类型的联系人 我使用以下在android 2.2上工作但在较新的android(如android 4.4.2)上不工作的代码来实现这一点: 问题是它在安卓2.2上运行,但在较新的安卓(安卓4.4.2)上它给我带来了一个例外。异常为:SQLiteException:没有这样的列:account\u type 我不知道为什么这在新的机器人上不起作用,但我认为这是一个安全特性 问题:对于我试图解决的这个问题,有什么解决方法吗 当前解决方案:我当
更新:请参阅下面的新解决方案。我已经解决了旧机器人和新机器人的问题。问题是,我应该使用视图“view_raw_contacts”而不是表“raw_contacts”。对我测试过的所有机器人都有效 更新选择:
String selection = ContactsContract.Contacts._ID + " IN (" + "SELECT " +
ContactsContract.RawContacts.CONTACT_ID + " FROM " +
"view_raw_contacts" + " WHERE " +
ContactsContract.RawContacts.ACCOUNT_TYPE + " IS NULL OR " +
ContactsContract.RawContacts.ACCOUNT_TYPE + " = 'com.google'" + ")";
在真正的设备上,我用正则表达式提取视图名称,希望它能在所有设备上运行,即使是那些修改联系人提供者的设备
String selection = ContactsContract.Contacts._ID + " IN (" + "SELECT " +
ContactsContract.RawContacts.CONTACT_ID + " FROM " +
"view_raw_contacts" + " WHERE " +
ContactsContract.RawContacts.ACCOUNT_TYPE + " IS NULL OR " +
ContactsContract.RawContacts.ACCOUNT_TYPE + " = 'com.google'" + ")";