需要帮助以访问 android 中的内置联系人系统

Posted

技术标签:

【中文标题】需要帮助以访问 android 中的内置联系人系统【英文标题】:Need help for accessing system built in contacts in android 【发布时间】:2011-09-15 10:41:17 【问题描述】:

我是 android 新手。我想使用 android 提供的内置联系人管理工具的系统。我进行了很多搜索,但无法确切知道如何进行。所以请帮助我了解如何操作从代码(而不是从 GUI)添加联系人,如何在我的应用程序中访问它们(只需在 textview 中显示所有记录)。 是否可以在不使用 SQLite 或文件操作的情况下做到这一点(意味着只是在系统内存中读写)???

提前谢谢...

【问题讨论】:

【参考方案1】:

看看这段代码!

btn_existing_contacts.setOnClickListener(new OnClickListener() 
        public void onClick(View v)
            Intent intent_contacts = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
            /*contacts.setAction(android.content.Intent.ACTION_VIEW);
            contacts.setData(People.CONTENT_URI);*/
            startActivityForResult(intent_contacts, 0);
            //displayContacts();


        
     );

从联系人屏幕返回后,

@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data)

super.onActivityResult(requestCode, resultCode, data);
String name,mailid,id;
switch(requestCode)

case 0:

    if(resultCode == RESULT_OK )
    
        Uri contactdata  = data.getData();

        Cursor cur = managedQuery(contactdata, null, null, null, null);


        if(cur.moveToFirst())
        
            id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]id, null); 
            emailCur.moveToFirst();
            String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));


            name = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
            //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
            //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email._ID));
            //Toast.makeText(context_contact, "Name:"+name+"\nmailid:"+email, Toast.LENGTH_SHORT).show();
            Intent intent_add_invitees = new Intent(<ClassContext>,<ur classname>.class);
            intent_add_invitees.putExtra("invitee_name", name);
            intent_add_invitees.putExtra("invitee_mailid", email);
            setResult(RESULT_OK, intent_add_invitees);
            finish();

        
    







【讨论】:

以上是关于需要帮助以访问 android 中的内置联系人系统的主要内容,如果未能解决你的问题,请参考以下文章

android 读写联系人需要啥权限

:管理手机

Android-读取/新增/操作系统联系人数据

在 Android 中,如何仅选择 PHONE 联系人?

如何在我的 android 程序中访问联系人

如何使用谷歌联系人api以编程方式将手机联系人同步到android中的gmail