在android中使用Provider.Contact来取得联系人的资料

本文介绍如何在Android应用中设置一个按钮,当点击后打开手机内置通讯录,选择联系人并返回主界面,显示所选联系人的姓名和电话号码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       程序简介:设置一个Button,在onClick()事件驱动后,调用手机内置的通讯录界面,并在选择联系人之后,返回自己的Activity。取得联系人的名字和电话号码放入两个EditText中。

        程序如下所示:

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

@SuppressWarnings("deprecation")
public class A08Activity extends Activity {
 EditText et01,et02;
 Button b;
 TextView tv;

//定义一个静态常数作为判断数据返回给主Activity使用
 public static final int PICK_CONTACT_SUBACTIVITY=2;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b=(Button)findViewById(R.id.button);
        b.setText("查询联系人资料");
        b.setBackgroundColor(Color.GREEN);
        et01=(EditText)findViewById(R.id.et01);
        et02=(EditText)findViewById(R.id.et02);
        et01.setBackgroundColor(Color.YELLOW);
        et02.setBackgroundColor(Color.YELLOW);
        et01.setTextColor(Color.RED);
        et02.setTextColor(Color.RED);
        b.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub

//将联系人的资源位置作为参数传入Uri中
    Uri uri=Uri.parse("content://contacts/people");

//将Intent.ACTION_PICK常数和Uri对象传入
    Intent i=new Intent(Intent.ACTION_PICK,uri);

//打开新的Activity
    startActivityForResult(i,PICK_CONTACT_SUBACTIVITY);
   }         
        });
       
    }
    public void onActivityResult(int requestCode,int resultCode,Intent data){
     switch(requestCode){
     case PICK_CONTACT_SUBACTIVITY:
      final Uri uriRet=data.getData();
      if(uriRet!=null){
       try {

//通过Cursor访问联系人的资料
     Cursor c=managedQuery(uriRet,null,null,null,null);
// 将Cursor移到数据最前端

     c.moveToFirst();
     String name=c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
     String number=c.getString(c.getColumnIndexOrThrow(Contacts.People.NUMBER));
     et01.setText(name);
     et02.setText(number);
    } catch (IllegalArgumentException e) {
     
     tv.setText(e.toString());
     e.printStackTrace();
    }
      }
      break;
     }
     super.onActivityResult(requestCode, resultCode, data);
    }
}

注意:本程序还需要添加android.permission.READ_CONTACTS权限。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值