level 8
tianzry
楼主
最近在写一个Android通讯录的软件,需要跟系统通讯录数据库交互,但是遇到一个很奇怪的问题,求助各位帮我看看!
首先,这个做法是根据谷歌官方培训指南文章做的:Modifying Contacts Using Intents https://developer.android.com/training/contacts-provider/modify-data.html
我点击一个按钮,可以跳转到系统的通讯录app里头添加联系人的页面,使用的是如下的代码:

但是我如果在这个界面添加时数据并确定,然后按返回键返回到自己写的软件上,再试图统计通讯录里头的联系人总数,代码如下:

问题就出现了:
如果我在系统通讯录界面添加了数据,返回时候调用countContactsNum()这个方法,也就是上面那段代码,可以得到准确的联系人数目,并且打印的信息为:
14,android.content.ContentResolver$CursorWrapperInner@484a3ba
如果我在系统通讯录界面没有添加任何数据就直接返回,之后调用countContactsNum()这个方法,则发现无法得到通讯录的联系人个数,返回0,打印信息为:
0,android.database.MatrixCursor@7852de1
这究竟是怎么回事,有人知道吗?求指导一下,谢谢!
2017年06月03日 12点06分
1
首先,这个做法是根据谷歌官方培训指南文章做的:Modifying Contacts Using Intents https://developer.android.com/training/contacts-provider/modify-data.html
我点击一个按钮,可以跳转到系统的通讯录app里头添加联系人的页面,使用的是如下的代码:

但是我如果在这个界面添加时数据并确定,然后按返回键返回到自己写的软件上,再试图统计通讯录里头的联系人总数,代码如下:
问题就出现了:如果我在系统通讯录界面添加了数据,返回时候调用countContactsNum()这个方法,也就是上面那段代码,可以得到准确的联系人数目,并且打印的信息为:
14,android.content.ContentResolver$CursorWrapperInner@484a3ba
如果我在系统通讯录界面没有添加任何数据就直接返回,之后调用countContactsNum()这个方法,则发现无法得到通讯录的联系人个数,返回0,打印信息为:
0,android.database.MatrixCursor@7852de1
这究竟是怎么回事,有人知道吗?求指导一下,谢谢!