应用程序在HTC上运行但不在samsung上运行Android(与联系人相关)

时间:2012-04-04 09:41:23

标签: android android-contacts contactscontract

我为ContactsContract创建了一个应用程序...我创建了一个微调器,它可以配置所有帐户,因此用户可以选择联系人类型,例如gmail(com.google),phoneBook等...

现在,如果我选择phoneBook,那么联系人将完美地添加到phoneBook中。 当我选择gmail选项时,它在我的htc手机上完美运行...联系人被添加,并且在同步后,我也可以在我的Gmail帐户中看到它。

但是,当我在任何一款三星手机上进行测试时,它都没有添加到我的Gmail的联系人中....

我很困惑......

感谢任何帮助。提前谢谢......

1 个答案:

答案 0 :(得分:0)

电话号码存储在自己的表格中,需要单独查询。要查询电话号码表,请使用存储在SDK变量ContactsContract.CommonDataKinds.Phone.CONTENT_URI中的URI。使用WHERE条件获取指定联系人的电话号码。

if (Integer.parseInt(cur.getString(
       cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
    Cursor pCur = cr.query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
    null, 
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
    new String[]{id}, null);
    while (pCur.moveToNext()) {
    // Do something with phones
    } 
    pCur.close();
}

对Android联系人SQLite数据库执行第二次查询。根据ContactsContract.CommonDataKinds.Phone.CONTENT_URI中存储的URI查询电话号码。联系人ID作为ContactsContract.CommonDataKinds.Phone.CONTACT_ID存储在电话表中,WHERE子句用于限制返回的数据。

电子邮件地址

查询电子邮件地址与电话号码类似。必须执行查询才能从数据库中获取电子邮件地址。查询存储在ContactsContract.CommonDataKinds.Email.CONTENT_URI中的URI以查询电子邮件地址表。

Cursor emailCur = cr.query( 
        ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
        null,
        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
        new String[]{id}, null); 
    while (emailCur.moveToNext()) { 
        // This would allow you get several email addresses
            // if the email addresses were stored in an array
        String email = emailCur.getString(
                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
        String emailType = emailCur.getString(
                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
    } 
    emailCur.close();