ContactsContract 在 sony experia 中不起作用

ContactsContract doesn't work in sony experia

我正在尝试将联系人详细信息从电话簿导入我的应用程序!我可以在几乎所有手机(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);

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

您发布的代码实际上可能会导致行从结果中排除,具体取决于数字的存储方式。您正在将 WHERE (data1) 添加到查询中,其中 data1 是存储 phone 数字的 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