android获取全部联系人方法
2016-05-30 16:56
471 查看
知识点:
1、获取联系人的权限;
2、intent启动的动作设置;
3、获取设备联系人信息;
获取全部联系人方法
点击按钮,获取全部联系人代码,然后选择其中一个联系人,并且将数据返回到调用的这个页面,取出来显示给用户看。
首先需要权限,在清淡文件中加入一下权限
还有一个重要的就是,因为我们调用的动作是:ACTION_PICK,有别于系统的选择数据的动作:android.intent.action.PICK,所以我们必须要在我们要启动的那个activity里面指定<action>和<category>两个参数
隐式启动一个activity
重写forresult的回调方法,并且根据返回来的uri去去的对应的联系人数据
在跳转的那个页面,我们需要访问手机的通讯录,将所有联系人的数据取出来,供用户选择。代码如下
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(); } });
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories