android查看联系人姓名和手机号码

第一步:布局文件就是一个Button,点击弹出联系人列表,选择联系人后将联系人的信息显示在两个TextView上,布局代码很简单,此处不再给出。

第二步:调到联系人选择页面并返回所选择的联系人信息可以用Intent来是实现,关键代码为:

Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,requestCode);

获取联系人信息的Activity代码为:

public class ReadContacts extends Activity{
    private Button queryContacts;
    private TextView contactName;
    private TextView contactNumber;
    //  定义Activity的请求码
    private final int PICK_CONTACT = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        queryContacts = (Button) findViewById(R.id.query_contacts);
        contactName = (TextView) findViewById(R.id.tv_contact_name);
        contactNumber = (TextView) findViewById(R.id.tv_contact_number);
        queryContacts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //  通过Intent调到手机联系人页面,Action属性为Intent.ACTION_PICK使用户选择联系人,并返回所选数据
                Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(intent,PICK_CONTACT);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case PICK_CONTACT:
                if(resultCode == Activity.RESULT_OK){
                    //  获取返回的联系人的Uri信息
                    Uri contactDataUri = data.getData();
                    Cursor cursor = getContentResolver().query(contactDataUri,null,null,null,null);
                    if(cursor.moveToFirst()){
                        //   获得联系人记录的ID
                        String contactId = cursor.getString(cursor.getColumnIndex(
                                ContactsContract.Contacts._ID));
                        //  获得联系人的名字
                        String name = cursor.getString(cursor.getColumnIndex(
                                ContactsContract.Contacts.DISPLAY_NAME));
                        String phoneNumber = "未找到联系人号码";
                        Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.
                                Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.
                                Phone.CONTACT_ID+"="+"?",new String[]{contactId},null);
                        if(phoneCursor.moveToFirst()){
                            phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.NUMBER));
                        }
                        //  关闭查询手机号码的cursor
                        phoneCursor.close();
                        contactName.setText(name);
                        contactNumber.setText(phoneNumber);
                    }
                    //  关闭查询联系人信息的cursor
                    cursor.close();
                }
                break;
        }
    }
}
第三步:读取联系人信息需要加权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值