ContactsContract在sony experia中不起作用

时间:2015-11-04 07:07:40

标签: android contact contactscontract sony-xperia

我正在尝试将电话簿中的联系人详细信息导入我的应用程序!我几乎可以在所有手机(Jellybean,Kitkat,Lollipop)中导入联系方式。但是当我在Sony Experia(kitkat)中测试时,光标不包含任何行。可能是什么原因?我尝试了很多,但无法解决问题。 以下是示例代码

 Cursor phones = null;
 phones = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]
 { ContactsContract.CommonDataKinds.Phone.NUMBER,
  ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
  ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI
  },
  ContactsContract.CommonDataKinds.Phone.NUMBER, null, null);

1 个答案:

答案 0 :(得分:0)

您可以使用null作为query()的第三个参数。

您发布的代码实际上可能导致从结果中排除行,具体取决于数字的存储方式。您正在向查询添加WHERE (data1),其中data1是存储电话号码的TEXT列。表达式文档的Boolean Expressions部分解释了如何在此上下文中评估TEXT值。

您可以在SQLite shell中验证这一点,如下所示:

SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite> select 'PASS' where ('8005551212');
PASS
sqlite> select 'PASS' where ('800 555 1212'); -- easier to see number
PASS
sqlite> select 'PASS' where ('+18005551212'); -- E164 format
PASS
sqlite> select 'PASS' where ('(800) 555 - 1212'); -- US national format
# no results