首页 > 系统 > Android > 正文

android 跳转到通讯录并获取展示到页面 及android联系人信息获取

2019-11-09 16:34:23
字体:
来源:转载
供稿:网友

一  :android 跳转到通讯录并获取展示到页面

大致思路;

1.点击跳转到通讯录界面 

2.获取通讯录姓名和手机号码 

3.回调展示拿过来的姓名和手机号码 

(一)跳转界面

public void jumpSystemContacts(View view){    Uri uri = Uri.parse("content://Contacts/people");    Intent intent = new Intent(Intent.ACTION_PICK, uri);    startActivityForResult(intent, 0);}
(二)回调拿值并展示
@OverridePRotected void onActivityResult(int requestCode, int resultCode, Intent data) {    switch (requestCode){        case 0:            if(data==null)            {                return;            }            //处理返回的data,获取选择的联系人信息            Uri uri=data.getData();            String[] contacts=getPhoneContacts(uri);            tv_main_name.setText(contacts[0]);            tv_main_phonenumber.setText(contacts[1]);            break;    }    super.onActivityResult(requestCode, resultCode, data);}
private String[] getPhoneContacts(Uri uri){    String[] contact=new String[2];    //得到ContentResolver对象    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;}
(三)权限配置
<!--添加联系人的权限--><uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE" />
二 :android联系人信息获取
public void getContacts(View view){    //获取联系人raw_contacts    //id  name    Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");    Cursor cursor=cr.query(uri,null,null,null,null);    while (cursor.moveToNext()){        int id=cursor.getInt(cursor.getColumnIndex("_id"));        String name=cursor.getString(cursor.getColumnIndex("display_name"));        Log.i("test",id+" "+name);        //继续获取相对应的联系人的数据(电话号码)        Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");        Cursor cursorData=cr.query(uriData,null,null,null,null);        while(cursorData.moveToNext()){            String data1=cursorData.getString(cursorData.getColumnIndex("data1"));            //int type=cursorData.getInt(cursorData.getColumnIndex("mimetype_id"));            String type=cursorData.getString(cursorData.getColumnIndex("mimetype"));            if("vnd.android.cursor.item/phone_v2".equals(type)){                Log.i("test","        "+data1+":"+type);            }        }    }}
//联系人名展示
ContentResolver cr = getContentResolver();ListView listView  = (ListView) findViewById(R.id.listView);
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Cursor cursor=cr.query(uri,null,null,null,null);
simpleCursorAdapter = new android.widget.SimpleCursorAdapter(this, R.layout.item_list, cursor, new String[]{"_id", "display_name"}, new int[]{R.id.tv_item_list_id, R.id.tv_item_list_name});
listView.setAdapter(simpleCursorAdapter);


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表