【问题标题】:contentResolver.query(ContactsContract.Contacts.CONTENT_URI...) return 0 count Cursor if called after Intent.ACTION_INSERTcontentResolver.query(ContactsContract.Contacts.CONTENT_URI...) 如果在 Intent.ACTION_INSERT 之后调用,则返回 0 计数光标
【发布时间】:2017-12-29 17:09:12
【问题描述】:

Huawei P8 上测试我的应用时,我遇到了一种奇怪的行为。在模拟器(android 版本 4、5、6、7)和 ASUS (android 6) 和 Samsung Galaxy S2 (Android 4.2) 上一切正常。

以下步骤适用于物理设备和模拟器。致电contentResolver.query() 后,我得到一个带有我设备上所有联系人的光标。

  1. 我打开我的应用程序
  2. 我打电话给contentResolver.query(ContactsContract.Contacts.CONTENT_URI...);

除了我的Huawei P8,以下步骤适用于所有地方;用我的 Huawei P8,只有它,我得到一个 0 计数光标

  1. 我打开我的应用程序
  2. 在我的应用中,我打开一个Intent 以在设备上添加新联系人
  3. 我添加了一个新联系人,或者我没有添加联系人就关闭了活动
  4. 我打电话给contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

这是我在设备上获取联系人的方式:

ContentResolver contentResolver = getBaseContext().getContentResolver();    
Cursor cursor =  contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

这就是我从我的应用程序中打开 Activity 以在设备上添加新联系人的方式

Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
intent.putExtra("finishActivityOnSaveCompleted", true);
startActivityForResult(intent, 101);

似乎在调用new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI) 后,联系人表被“锁定”了。

我是否必须以某种方式“关闭” Intent 才能查询ContactsContract.Contacts.CONTENT_URI

重要提示:例如,如果我调用 Intent.ACTION_CALL 而不是 Intent.ACTION_INSERT,我没有遇到任何问题,并且能够成功查询 ContactsContract.Contacts.CONTENT_URI。所以,问题是在华为 P8 上“调用”Intent.ACTION_INSERT 和查询ContactsContract.Contacts.CONTENT_URI

提前谢谢你。

【问题讨论】:

  • 你能不断地重现这种行为吗?听起来很奇怪...如果您从插入意图返回后将查询延迟几秒钟怎么办?
  • 是的,我能够不断地重现这种行为!在对 ContactsContract.Contacts.CONTENT_URI 进行查询之前,我还尝试等待近一分钟,但我一直得到 0 计数光标
  • 在其他设备上测试,可能是你手机的问题
  • 我在华硕试了试,效果很好。是华为P8的bug!!!什么鬼!
  • 试试intent.setType(Contacts.CONTENT_TYPE);

标签: android android-contacts android-contentresolver contactscontract


【解决方案1】:

(为了完整起见,我会回答这个问题)

这可能是设备错误,请在其他设备上尝试相同的代码。

【讨论】:

  • 我在三星 S2 (android 4.2) 和华硕 (android 6) 上试过,我的代码有效。好像真的是华为P8的bug
猜你喜欢
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2015-01-18
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多