您的位置:首页 > 移动开发 > Android开发

[自学Android之旅] 获取通讯录的联系人 姓名和号码

2015-05-27 16:01 204 查看
获取系统的人系人的信息 [姓名和电话号码] 然后将联系人的信息返回到 程序上来

分析 : 在布局中需要的控件 EditText ,和Button EditText来存放返回的联系人信息 Button用来进入通讯录的

<EditText
android:id="@+id/tel_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false" />

<EditText
android:id="@+id/tel_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/look_contacts"/>


接着是对主代码的编写

public class MainActivity extends Activity {

final int PICK_CONTACT = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bn = (Button) findViewById(R.id.button);
//为控件绑定一个监控,当点击控件的时候,就会进入系统的通讯录中
bn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();

intent.setAction(Intent.ACTION_GET_CONTENT);

intent.setType("vnd.android.cursor.item/phone");

//用来打开一个新的Activity,新的Activity关闭后会给前一个Activity返回数据
startActivityForResult(intent, PICK_CONTACT);

}
});
}
//为了获取数数据,需要重写onActivityResult(),这个方法接收三个参数,一个是请求吗,第二个是返回码,第三个是数据
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case (PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK)
{
//获取返回的数据
Uri contactData = data.getData();
CursorLoader  contactLoader = new CursorLoader(this,contactData, null,null,null,null);
//查询联系人信息
Cursor cursor = contactLoader.loadInBackground();
//如果查询到指定的联系人
if(cursor.moveToFirst())
{
String contactId  = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//获取联系人的名字
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

String phoneNumber = "次联系人暂未建立号码";
//根据联系人查询该联系人的详细信息
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.
Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+" = " +contactId,null,null);

if(phones.moveToFirst())
{
取出号码
phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract
.CommonDataKinds.Phone.NUMBER
));
}
//关闭游标
phones.close();

EditText show = (EditText) findViewById(R.id.tel_show);
//显示联系人姓名
show.setText(name);

EditText phone = (EditText) findViewById(R.id.tel_phone);
//显示联系人的电话号码
phone.setText(phoneNumber);

}
//关闭游标
cursor.close();

}
break;
}
};


因为是获取系统的联系人的信息,需要系统权限,所以配置其系统权限为

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


这样一个简单的获取联系人的小程序就完成了

》 run->as

源代码可以下载
http://download.csdn.net/detail/xunzi229/8744931
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: