contentResolver.query(ContactsContract.Contacts.CONTENT_URI ...)如果在Intent.ACTION_INSERT之后调用,则返回0 count Cursor

时间:2017-07-24 07:56:56

标签: android android-contacts android-contentresolver contactscontract

我在华为P8 上测试我的应用时遇到了奇怪的行为。一切都适用于模拟器(Android版本4,5,6,7)和华硕(android 6)和三星Galaxy S2 (Android 4.2)。

以下步骤适用于物理设备和模拟器。在调用contentResolver.query()之后,我得到了一个包含我设备所有联系人的光标。

  1. 我打开我的应用
  2. 我致电contentResolver.query(ContactsContract.Contacts.CONTENT_URI...);
  3. 华为P8 外,以下步骤无处不在;用我的华为P8 ,只有它,我得到0计数光标

    1. 我打开我的应用
    2. 从我的应用中,我打开Intent在设备上添加新联系人
    3. 我添加新联系人或关闭活动而不添加联系人
    4. 我致电contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    5. 这是我在设备上获取联系人的方式:

      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)后,联系人表被锁定了#34;

      我必须"关闭"那个意图能够查询ContactsContract.Contacts.CONTENT_URI

      重要提示:例如,如果代替Intent.ACTION_INSERT我致电Intent.ACTION_CALL我没有遇到任何问题,而且我能够成功查询ContactsContract.Contacts.CONTENT_URI。所以,问题是"呼叫" Intent.ACTION_INSERT以及在华为P8上查询ContactsContract.Contacts.CONTENT_URI之后。

      谢谢你。

1 个答案:

答案 0 :(得分:0)

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

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