Samsung roms可能存在错误?

时间:2012-02-02 09:35:55

标签: android

我目前正在使用向用户显示联系人列表的应用程序。

在该列表中,必须显示联系人的姓名,联系人图片和电子邮件,因此我得到如下列表:

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 ......)谢谢!

1 个答案:

答案 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());
    }
}