Android 获取联系人之方式三

来源:互联网 发布:青岛网络干部学院错误 编辑:程序博客网 时间:2024/04/29 00:27

首先看看效果图
这里写图片描述
这里写图片描述
这里写图片描述
1、添加权限

    <!--获取通讯录权限-->    <uses-permission android:name="android.permission.READ_CONTACTS" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.编写布局
activity_contacts.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="match_parent">    <EditText        android:layout_width="0dp"        android:layout_height="wrap_content"        android:id="@+id/et_telPhone"        android:layout_weight="7"/>    <Button        android:layout_width="0dp"        android:layout_height="wrap_content"        android:text="打开练习人"        android:layout_weight="3"        android:onClick="show"/></LinearLayout>

3.写Activity
ContactsActivity.java

package com.zking.mycontacts;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.provider.ContactsContract;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;/** * Created by Administrator on 2017/2/21. */public class ContactsActivity extends AppCompatActivity {    private EditText editText;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_contacts);        initViews();    }    private void initViews() {         editText = (EditText) findViewById(R.id.et_telPhone);    }    public void show(View view){        //跳转到通讯录界面        Uri uri = Uri.parse("content://contacts/people");        Intent intent = new Intent(Intent.ACTION_PICK, uri);        startActivityForResult(intent, 0x101);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == 0x101){            if (data == null){                return;            }            Uri uri = data.getData();            String[] strings = getPhoneContacts(uri);            editText.setText(strings[0] + "\t" + strings[1]);        }    }    private String[] getPhoneContacts(Uri uri){        String[] contact = new String[2];        ContentResolver cr = getContentResolver();        //取得电话本中开始一项的光标        Cursor cursor=cr.query(uri,null,null,null,null);        if(cursor!=null)        {            cursor.moveToFirst();            //取得联系人姓名            int nameFieldColumnIndex=cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);            contact[0]=cursor.getString(nameFieldColumnIndex);            //取得电话号码            String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));            Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);            if(phone != null){                phone.moveToFirst();                contact[1] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));            }            phone.close();            cursor.close();        }        else        {            return null;        }        return contact;    }}
0 0