android获取全部联系人方法

原创 2016年05月30日 16:56:47

知识点:

1、获取联系人的权限;

2、intent启动的动作设置;

3、获取设备联系人信息;


获取全部联系人方法

点击按钮,获取全部联系人代码,然后选择其中一个联系人,并且将数据返回到调用的这个页面,取出来显示给用户看。


首先需要权限,在清淡文件中加入一下权限

<span style="font-size:14px;"><uses-permissionandroid:name="android.permission.SEND_SMS"/>
<uses-permissionandroid:name=“android.permission.READ_CONTACTS"/></span>

还有一个重要的就是,因为我们调用的动作是:ACTION_PICK,有别于系统的选择数据的动作:android.intent.action.PICK,所以我们必须要在我们要启动的那个activity里面指定<action>和<category>两个参数

<span style="font-size:14px;"><activity android:name=".ContactPick"android:label="@string/app_name">
	<actionandroid:name=“android.intent.action.PICK”/>//制动动作
	<category android:name=“android.intent.category.DEFAULT”/>//指定策略
</activity></span>

隐式启动一个activity

@Override 
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK,//action_pick
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}

重写forresult的回调方法,并且根据返回来的uri去去的对应的联系人数据

@Override 
publicvoid onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK,//action_pick
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}

重写forresult的回调方法,并且根据返回来的uri去去的对应的联系人数据
@Override
publicvoid onActivityResult(int reqCode, int resCode, Intent data) {
super.onActivityResult(reqCode, resCode, data);
switch (reqCode) {
case (PICK_CONTACT): {
if (resCode == Activity.RESULT_OK) {
String name;
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
c.moveToFirst();
name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
TextView tv;
tv = (TextView)findViewById(R.id.edt_PhoneNo);
tv.setText(name);
}
break;
}
}
}

在跳转的那个页面,我们需要访问手机的通讯录,将所有联系人的数据取出来,供用户选择。代码如下

setContentView(R.layout.main);
Intent orgIntent=getIntent();//得到带过来的intent
Uri queryUri=orgIntent.getData(); //取出带过来的数据
final Cursor c = managedQuery(queryUri,
null, 
null,
null,
null);//根据带过来的uri开始查询通讯录,并且返回一个cursor对象,后续就对这个cursor对象进行操作
String[] fromColumns=new String[]{ContactsContract.Contacts.DISPLAY_NAME};
int[] toLayoutIDs = newint[] { R.id.itemTextView };
SimpleCursorAdapter adapter = newSimpleCursorAdapter(this,
R.layout.listitemlayout, c, fromColumns, toLayoutIDs);//将数据放在适配器中
ListView lv = (ListView) findViewById(R.id.contactListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {//lv添加item点击监听事件
@Override
publicvoid onItemClick(AdapterView<?> parent, View view, int pos,long id) {
c.moveToPosition(pos); //移动到cursor指针对应的位置上
int rowId = c.getInt(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));//取出列的索引值
Uri outURI = Uri.parse(ContactsContract.Contacts.CONTENT_URI.toString() + rowId);//拼接成uri,返回给调用者
Intent outData = new Intent();
outData.setData(outURI);
setResult(Activity.RESULT_OK,outData);
finish();
}
});



版权声明:本文为博主原创文章,未经博主允许不得转载。

【翻译】通讯录数据的存取(一)——获取通讯录列表

通讯录数据的存取 有选择性的翻译自:https://developer.android.com/training/contacts-provider/index.html...
  • lufqnuli
  • lufqnuli
  • 2016年06月06日 18:04
  • 4389

ViewPager+Fragment获取联系人列表

在Android中,可以使用ContentResolver对通信录中的数据进行添加、删除、修改和查询操作。 在对联系人进行操作时需加入以下两个权限   主界面布局文件activity...
  • canghai1129
  • canghai1129
  • 2013年10月18日 18:10
  • 1369

Android:ContentProvider获取手机联系人列表

这次带来的是手机通讯录常用字段的展示直接上代码,看注释:activity_main.xml: ...
  • James_lang
  • James_lang
  • 2017年02月22日 02:00
  • 2588

Android -ContentProvider之获取手机联系人

在做项目的时候,因为要用到我们自动获取联系人的姓名和电话,就想到了ContentProvider分享数据的功能,这样做既节省了时间,也减少了我们输入错误号码的几率,所以,想在这里把小demo分享给大家...
  • qiuqiu_qiuqiu123
  • qiuqiu_qiuqiu123
  • 2017年02月11日 15:17
  • 1258

Android6.0的通讯录获取

Android6.0 的通讯录获取
  • gyhgx
  • gyhgx
  • 2016年05月19日 11:21
  • 12254

在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱

1:androidmanifest.xml的内容 xml version="1.0" encoding="utf-8"?> manifest xmlns:android="http://schem...
  • SunCherryDream
  • SunCherryDream
  • 2016年10月23日 18:22
  • 3295

Android通讯录管理(获取联系人、通话记录、短信消息)(一)

Android通讯录管理(获取联系人、通话记录、短信消息) 2014年2月26日 通讯录开发研究学习 前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选、反选和删除等在...
  • wwj_748
  • wwj_748
  • 2014年02月26日 11:13
  • 64649

安卓选择通讯录联系人和获取全部联系人

点击电话按钮,进入到手机通讯录,直接选择联系人,将手机号码带回。 读取联系人,所以申请权限 点击电话按钮跳转 startActivityForResult(new Intent(Intent.ACTI...
  • jiangtea
  • jiangtea
  • 2016年08月06日 23:06
  • 4099

Android-->获取所有联系人以及所有的字段(联系人头像,邮箱,地址,公司等)

本文测试平台: Android 6.0 , API 23辅助阅读: Android官网有关联系人的开发指南: https://developer.android.com/guide/topics/...
  • angcyo
  • angcyo
  • 2016年08月11日 01:54
  • 4680

Android中如何取得联系人,如何得到一个联系人下面的多个号码

1、Content Provider是Android提供的一个供Android多个应用程序数据共享的技术2、Andriod系统自带联系人(Contacts)软件,如何在自定义系统中调用Contacts...
  • wonderful19891024
  • wonderful19891024
  • 2010年12月01日 21:56
  • 14251
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android获取全部联系人方法
举报原因:
原因补充:

(最多只允许输入30个字)