Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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联系人_Android_Android Contentresolver - Fatal编程技术网

根据原始联系人帐户类型查询android联系人

根据原始联系人帐户类型查询android联系人,android,android-contentresolver,Android,Android Contentresolver,我正在尝试进行一个过滤联系人的查询,以便仅检索具有特定帐户类型的联系人 我使用以下在android 2.2上工作但在较新的android(如android 4.4.2)上不工作的代码来实现这一点: 问题是它在安卓2.2上运行,但在较新的安卓(安卓4.4.2)上它给我带来了一个例外。异常为:SQLiteException:没有这样的列:account\u type 我不知道为什么这在新的机器人上不起作用,但我认为这是一个安全特性 问题:对于我试图解决的这个问题,有什么解决方法吗 当前解决方案:我当

我正在尝试进行一个过滤联系人的查询,以便仅检索具有特定帐户类型的联系人

我使用以下在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'" + ")";