我目前正在使用向用户显示联系人列表的应用程序。
在该列表中,必须显示联系人的姓名,联系人图片和电子邮件,因此我得到如下列表:
final Cursor c = managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,ContactsContract.CommonDataKinds.Email.TYPE + "="+ContactsContract.CommonDataKinds.Email.TYPE_HOME , null,ContactsContract.Contacts.DISPLAY_NAME);
int tamano= c.getCount();
Log.e("USER", "The size of the contact list is : " + tamano);
这就是......
我在3款三星手机(2款Galaxy SII和1款Galaxy ACE)以及2款HTC(1款HTC Desire S和1款HTC Wildfire)中尝试过这款产品。
结果至少是有趣的:
所有的星系:
联系人列表的大小为:9
使用HTC:
联系人列表的大小为482
所有手机都与同一个Gmail帐户同步,因此拥有相同数量的联系人...
这怎么可能?三星roms中是否有错误或什么?
问候!
** *使用解决方案进行编辑:
IT工作!现在我知道问题是什么:
ContactsContract.CommonDataKinds.Email.TYPE_HOME
问题在于,三星并没有像HTC那样组织联系,而现在它已经通过这个小小的变化来解决:
ContactsContract.CommonDataKinds.Email.TYPE_OTHER
现在所有的联系人都出现在所有的手机中(除了Galaxy Ace,但可能是因为它有奇怪的rom ......)谢谢!
答案 0 :(得分:0)
我会改变你的查询...
= managedQuery(ContactsContract.Data.CONTENT_URI
, null
, ContactsContract.DATA.MIMETYPE+"=? AND "+ContactsContract.CommonDataKinds.Email.TYPE+"=?"
, new String[]{ContactsContract.CommonDataKinds.Email.Content_Item_Type, ContactsContract.CommonDataKinds.Email.TYPE_HOME}
, ContactsContract.DATA.DISPLAY_NAME );
我没有对此进行测试,但应该是正确的或类似的。
显示光标以帮助调试的简单方法
public static void displayCursor(Cursor c){
int columnCount;
if(c.moveToFirst()){
columnCount = c.getColumnCount();
do{
Log.i(" ", "********************");
for(int i=0;i<columnCount;i++){
try{
Log.i(c.getColumnName(i)+":", c.getString(i)+" ");
}catch(Exception e){
}
}
}while(c.moveToNext());
}
}