Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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 API 8,10 contacts contract.Data.HAS_PHONE_NUMBER没有此类列_Android_Android Emulator_Android Contacts_Contactscontract_Android Sqlite - Fatal编程技术网

Android API 8,10 contacts contract.Data.HAS_PHONE_NUMBER没有此类列

Android API 8,10 contacts contract.Data.HAS_PHONE_NUMBER没有此类列,android,android-emulator,android-contacts,contactscontract,android-sqlite,Android,Android Emulator,Android Contacts,Contactscontract,Android Sqlite,下面的查询在我的设备(API 15)上运行良好。它在运行API 8或API 10的仿真器中不起作用 以下是查询: Cursor contactsCur = getContentResolver().query( ContactsContract.Data.CONTENT_URI, new String[] { ContactsContract.Data._ID, ContactsContract.Data.CONTACT_ID, ContactsContract.Data

下面的查询在我的设备(API 15)上运行良好。它在运行API 8或API 10的仿真器中不起作用

以下是查询:

Cursor contactsCur = getContentResolver().query(
  ContactsContract.Data.CONTENT_URI,
  new String[] { ContactsContract.Data._ID,
    ContactsContract.Data.CONTACT_ID,
    ContactsContract.Data.DISPLAY_NAME,
    ContactsContract.CommonDataKinds.Organization.COMPANY,
    ContactsContract.CommonDataKinds.Phone.TYPE,
    ContactsContract.Data.LOOKUP_KEY,
    ContactsContract.CommonDataKinds.Phone.NUMBER,
    Contacts.Data.MIMETYPE,
    ContactsContract.CommonDataKinds.Phone.MIMETYPE,
    ContactsContract.CommonDataKinds.StructuredPostal.CITY,
    ContactsContract.CommonDataKinds.StructuredPostal.STREET,
    ContactsContract.CommonDataKinds.StructuredPostal.REGION,
    ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE},
  ContactsContract.Data.HAS_PHONE_NUMBER + " >? ",
  new String[] { "0" },
  ContactsContract.Data.DISPLAY_NAME + " COLLATE NOCASE ASC");
下面是它抛出的异常:
android.database.sqlite.SQLiteException:没有这样的列:有电话号码:,编译时:选择(id),联系人(id),显示姓名,数据1,数据2,查找,数据1,mimetype,mimetype,数据7,数据4,数据8,数据9从视图(数据)限制数据(其中(1)和(有电话号码))按显示顺序

奇怪的是,以下代码也不起作用:

Cursor contactsCur = getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    new String[] { ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER},
    ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER + " >? ",
    new String[] { "0" },
    null);
它将生成:
java.lang.IllegalArgumentException:无效列具有\u phone\u号码

声明
ContactsContract.commondatatypes.Phone
可以从接口android.provider.ContactsContract.ContactsColumns访问
has\u Phone\u NUMBER

为了增加陌生感,此查询可以工作:

Cursor contactsCur = getContentResolver().query(
    ContactsContract.Data.CONTENT_URI,
    new String[] { ContactsContract.Data.LOOKUP_KEY},
    null,
    null,
    null);
但这一条没有:

Cursor contactsCur = getContentResolver().query(
    ContactsContract.Data.CONTENT_URI,
    new String[] { ContactsContract.Data.HAS_PHONE_NUMBER},
    null,
    null,
    null);
contacts contract.Data.LOOKUP\u KEY
contacts contract.Data.HAS\u PHONE\u NUMBER
来自相同的隐式联接


我哪里出错了?

您遇到的主要问题是
contacts contract.commondatatypes.Phone.CONTENT\u URI
自动过滤
上的电话号码=1
。因此,您可以保证从
Phone.CONTENT\u URI
中输出的所有内容都有一个电话号码。然后,您可以通过检查
Phone.TYPE
是否为
Phone.TYPE\u MOBILE
Phone.TYPE\u WORK\u MOBILE
(例如)中的一种来进一步过滤它,如果您想限制它的电话号码类型


供参考(请注意,
数据/电话
URI中没有电话号码):

以及:


如果我没弄错的话,您需要使用
ContactsContract.Contacts.CONTENT\u URI
而不是
ContactsContract.Data.CONTENT\u URI
。这将为其他列生成隐式联接。更改为
Contacts contract.Contacts.CONTENT\u URI
给了我
java.lang.IllegalArgumentException:无效列contact\u id
使其看起来像
有电话号码
应该通过与
Contacts contract.Contacts的隐式联接可用。Contacts
你知道吗找到解决方法?你提供了很多信息,对我很有帮助。谢谢
Columns for content://com.android.contacts/contacts:
- times_contacted
- contact_status
- custom_ringtone
- has_phone_number
- phonetic_name
- phonetic_name_style
- contact_status_label
- lookup
- contact_status_icon
- last_time_contacted
- display_name
- sort_key_alt
- in_visible_group
- _id
- starred
- sort_key
- display_name_alt
- contact_presence
- display_name_source
- contact_status_res_package
- contact_status_ts
- photo_id
- send_to_voicemail
Columns for content://com.android.contacts/data/phones:
- data_version
- phonetic_name
- phonetic_name_style
- contact_id
- lookup
- data12
- data11
- data10
- mimetype
- data15
- data14
- data13
- display_name_source
- data_sync1
- data_sync3
- data_sync2
- data_sync4
- account_type
- custom_ringtone
- status
- data1
- data4
- data5
- data2
- data3
- data8
- data9
- group_sourceid
- data6
- account_name
- data7
- display_name
- in_visible_group
- display_name_alt
- contact_status_res_package
- is_primary
- contact_status_ts
- raw_contact_id
- times_contacted
- contact_status
- status_res_package
- status_icon
- contact_status_icon
- mode
- version
- last_time_contacted
- res_package
- _id
- name_verified
- status_ts
- dirty
- is_super_primary
- photo_id
- send_to_voicemail
- name_raw_contact_id
- contact_status_label
- status_label
- sort_key_alt
- starred
- sort_key
- contact_presence
- sourceid