Android开发之获取手机通讯录
来源:互联网 发布:mac桌面图标消失了 编辑:程序博客网 时间:2024/06/04 19:37
获取手机通讯录是Android最常用的小功能,今天自学到了,记下来,主要是通过系统自带的内容提供者提供的数据,我们使用内容接收者获取相应的数据到cursor中,然后获取对应data表中的字段,相关字段代表什么含义,只能自己去查了。
下面是手机通讯录列表的代码,仅供参考:
package com.andy.phonecontact;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;/** * @author Zhang,Tianyou * @version 2014年11月18日 下午10:00:46 */public class MainActivity extends Activity {private ListView select_contact;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);select_contact = (ListView) findViewById(R.id.select_contact);List<Map<String, String>> data = getContactInfo();select_contact.setAdapter(new SimpleAdapter(MainActivity.this, data,R.layout.contact_item_view, new String[] { "name", "phone" },new int[] { R.id.tv_name, R.id.tv_phone }));}/** * 读取手机里的联系人信息 * * @return */private List<Map<String, String>> getContactInfo() {// 把所有的联系人放到listList<Map<String, String>> list = new ArrayList<Map<String, String>>();// 得到一个内容解析器ContentResolver resolver = getContentResolver();// 获取联系人表对应的内容提供者url raw_contacts表和data表Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");Uri datauri = Uri.parse("content://com.android.contacts/data");Cursor cursor = resolver.query(uri, new String[] { "contact_id" },null, null, null);// 获取contact_id 获取联系人idwhile (cursor.moveToNext()) {String contact_id = cursor.getString(0);if (contact_id != null) {// 具体的某个联系人Map<String, String> map = new HashMap<String, String>();// 如果不为空 查询对应data表的联系人信息Cursor dataCursor = resolver.query(datauri, new String[] {"data1", "mimetype" }, "contact_id=?",new String[] { contact_id }, null);while (dataCursor.moveToNext()) {String data1 = dataCursor.getString(0);String mimetype = dataCursor.getString(1);System.out.println("data1 ==" + data1 + "mimetype == "+ mimetype);if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {System.out.println("电话:" + data1);map.put("phone", data1);} else if ("vnd.android.cursor.item/name".equals(mimetype)) {System.out.println("姓名:" + data1);map.put("name", data1);}}list.add(map);// 释放游标dataCursor.close();}}cursor.close();return list;}}
2 布局文件 在activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.andy.phonecontact.MainActivity" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/select_contact" /></RelativeLayout>
3 ListView填充布局contact_item_view.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textColor="#ff0000" android:textSize="22sp" /> <TextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@android:drawable/ic_menu_call" android:text="5558" android:textColor="#000000" android:textSize="22sp" /></LinearLayout>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
0 1
- Android开发之获取手机通讯录
- Android开发之获取手机通讯录
- Android 获取手机通讯录
- android获取手机通讯录
- android获取手机通讯录
- IOS开发 获取手机通讯录
- Android开发笔记之获取通讯录
- iOS开发之获取手机通讯录联系人信息<二>
- iOS开发之获取手机通讯录联系人信息<一>
- iOS之获取手机通讯录
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- HDU 1022 Train Problem I
- Android源码分析之模板方法模式
- 你的生命有什么可能
- nginx中时间的管理
- MyEclipse设置注释格式
- Android开发之获取手机通讯录
- 博客文章小结
- Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
- C# 生成缩略图
- P2P架构
- [Axis2]org.apache.axiom.om.NodeUnavailableException
- 时间去哪了
- hdoj 1811 Rank of Tetris 【拓扑】+【并查集】
- Holding Bin-Laden Captive!(杭电1085)(母函数)