【问题标题】:Read all contacts from phone and sim Android从手机和 sim Android 读取所有联系人
【发布时间】:2016-05-20 01:50:24
【问题描述】:

编辑 ::: 代码有效。这是 Eclipse 的问题,代码按预期在 logcat 中显示输出。

Android 2.3.3

我对使用 contentproviders 还是很陌生。我只是想尝试一个如何从手机中检索联系人的示例。当我在我的 SAMSUNG Mobile 上尝试时,我看到的示例很少,但没有一个对我有用。

这是我用过的代码...

public class Class_Add_Contact extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_add_contact);

        readContacts();    
    }

    private void readContacts() {
        // TODO Auto-generated method stub

        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);

        while (cur.moveToNext()) {

            String name =cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));    
            String phoneNumber = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            System.out.println(name + "   " + phoneNumber);
            }
    }
}

代码看起来不错,但 logcat 中没有显示任何数字。有什么问题?

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:

    试试这个

    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    
    while (cursor.moveToNext()) {
        String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        System.out.println(contactId + "   " + name);
    }
    cursor.close();
    

    它返回联系人的姓名和id(id可能是contacts表的行号)

    【讨论】:

    • 我们什么时候使用 ContactsContract.Contact 什么时候使用 ContactsContract.CommonDataKinds.Phone ?
    • 这两个代码都有效。这只是 Eclipse 的问题。
    • 我认为 ContactContract.CommonDataKinds 可以帮助您插入新数据或更改它(以编程方式..)并且 ContactsContract.Contact 只是将 Contacts 表作为常量返回.. 这样您就无法更改任何数据..
    • @VamsiChalla 更正!!不要注意我的第一条评论.. ContactContract.CommonDataKinds 保存联系人数据,例如:照片、号码、电子邮件和所有此类数据.. ContactContract.Contacts 保存contactId,他的名字显示在您的手机上..因此,当您想获取电话号码用户 commonDataKinds .. 否则,如果您想插入、更新、删除联系人或仅选择联系人显示的名称,请使用 ContactContract.Contact
    • 我正在使用姜饼手机,上面的代码没有显示 sim 联系人,只显示手机中保存的联系人是错误还是我需要使用其他姜饼方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多