我在华为P8上测试我的应用程序时遇到了奇怪的行为。在模拟器(安卓版本4,5,6,7(和华硕(android 6(和三星Galaxy S2(Android 4.2(上一切正常。
以下步骤适用于物理设备和模拟器。调用contentResolver.query()
后,我得到一个光标,其中包含设备的所有联系人。
- 我打开我的应用
- 我打电话给
contentResolver.query(ContactsContract.Contacts.CONTENT_URI...);
以下步骤适用于除我的华为P8以外的所有地方;使用我的华为P8,只有使用它,我才能获得0计数光标
- 我打开我的应用
- 在我的应用中,我打开了一个
Intent
以在设备上添加新联系人 - 我添加新联系人或关闭活动而不添加联系人
- 我打电话给
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);
这就是我从我的应用程序打开活动以在设备上添加新联系人的方式
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)
后,联系人表被"锁定"。
我是否必须以某种方式"关闭"意图才能查询ContactsContract.Contacts.CONTENT_URI
?
重要提示:例如,如果我没有打电话给Intent.ACTION_CALL
Intent.ACTION_INSERT
,我没有遇到任何问题,并且我能够成功查询ContactsContract.Contacts.CONTENT_URI
。因此,问题是在华为P8上Intent.ACTION_INSERT
和查询ContactsContract.Contacts.CONTENT_URI
后"调用"。
谢谢你。
(为了完整起见,我将对此做出回答(
这可能是设备错误,请在其他设备上尝试相同的代码。