获取手机通讯录信息方法总结

1.最简洁的方法

使用类

android.provider.ContactsContract.CommonDataKinds.Phone;

代码如下:

<span style="font-size:18px;">    Cursor c = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null,null);
    startManagingCursor(c);
    ListAdapter adapter=new SimpleCursorAdapter(this,
                                android.R.layout.simple_list_item_2,
                                c,
                                new String[]{Phone.DISPLAY_NAME,Phone.NUMBER},
                                new int[]{android.R.id.text1,android.R.id.text2});   </span>

然后就可以使用ListView显示姓名和电话号码了。

注意:

1.如果一个人有两个电话,则分别显示。

2.如果有两个相同的人,也会分别显示,不会显示一个人的。

运行结果:

2.一般方法

使用类

<span style="font-size:18px;">android.provider.ContactsContract.Contacts </span>

代码如下:

<span style="font-size:18px;">Map<String,String> contacts;
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
int nameIndex=-1;
ContentResolver cr=getContentResolver();
Cursor cur=cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,null);
while(cur.moveToNext()){
   number="";
   //得到名字
   nameIndex=cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
   name=cur.getString(nameIndex);
   //得到电话号码
   String contactId = cur.getString(cur
        .getColumnIndex(ContactsContract.Contacts._ID)); // 获取联系人的ID号,在SQLite中的数据库ID
        Cursor phone = cr.query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
        + contactId, null, null);
   while (phone.moveToNext()) {
   String strPhoneNumber = phone.getString(
                           phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 手机号码字段联系人可能不止一个
   number += strPhoneNumber+"\n";
   }
   contacts=new  HashMap<String,String>();
   //放入Map
   contacts.put("name", name);
   contacts.put("number", number);
   list.add(contacts);
   }
   cur.close(); </span>

得到名字和电话号码,放入Map中,然后再钭Map放入List中。

之后就可以使用ListView显示名字和电话号码:

部分代码如下:

<span style="font-size:18px;">SimpleAdapter adapter = new SimpleAdapter(this,list,android.R.layout.simple_list_item_2,
        new String[]{"name","number"},
        new int[]{android.R.id.text1,android.R.id.text2});
listView.setAdapter(adapter); </span>

注意:

1.若一个姓名下有多个电话号码,则只显示一个姓名,多个号码。

2.若有多个同名的,还是显示多个姓名。

结果截图:

时间: 2024-11-15 21:08:21

获取手机通讯录信息方法总结的相关文章

安卓开发:获取手机通讯录信息

写一个安卓软件,实现获取通讯录里的人名和对应的电话号码,并且通过ListView显示出来. 因为要获取手机本地的信息,所以第一个步骤就是先给定权限咯 <uses-permission android:name="android.permission.READ_CONTACTS"/> 因为获取到信息后是通过ListView显示出来,所以把布局写好,总共两个布局,一个布局放ListView,一个布局放ListView的子布局,这里比较基础,就不放代码了 接着就是通过java代码

iOS-JNAddressBook 获取手机通讯录信息

因为最近项目需要,要获取手机通讯并显示出来,上网搜了一下代码,重新整理了一下. 放上github:https://github.com/neng18/JNAddressBook #import <Foundation/Foundation.h> @interface JNAddressBook : NSObject @property (nonatomic,assign) int recordID; @property (nonatomic,copy) NSString *name; @pro

仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话

1.使用UITableView,实现联系人字母排序.点击字母跳转显示联系人组目录: 2.使用UISearchController,实现联系搜索,动态显示符合查询的联系人: 3.点击通讯录列表项,显示联系人信息(使用自定义模式化窗口类似与UIAlertView,使用UIwindow实现),点击拨号,可以直接拨打电话: 4.实现获取手机通讯录里面的联系人信息: 详情见资源:http://download.csdn.net/detail/u011622479/9505751 效果图如下: 获取联系人:

Android开发之获取手机通讯录

获取手机通讯录是Android最常用的小功能,今天自学到了,记下来,主要是通过系统自带的内容提供者提供的数据,我们使用内容接收者获取相应的数据到cursor中,然后获取对应data表中的字段,相关字段代表什么含义,只能自己去查了. 下面是手机通讯录列表的代码,仅供参考: package com.andy.phonecontact; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import

Android获取手机相关信息

首先,一个小例子: package com.brio.testid; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.os.Bundle; import android.provider.Settings.Secure; import android.widget.TextView; public class MainActivity extends Activity {

android 安卓APP获取手机设备信息和手机号码的代码示例

下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个android工程(JinshanTest), 并需要在工程的AndroidManifest.xml文件中,添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 图例: 第二步:新建一个工具类

PHP获取手机相关信息

该PHP操作类实现获取手机号手机头信息,取UA,取得手机类型,判断是否是opera,判断是否是m3gate,取得HA,取得手机IP 代码如下: <?php /** * @desc 手机操作类 获取手机相关信息 * @since */class mobile { /** * 函数名称: getPhoneNumber * 函数功能: 取手机号 * 输入参数: none * 函数返回值: 成功返回号码,失败返回false * 其它说明: 说明 */ public function getPhoneNu

reuqest获取服务器一些信息方法集合 java

request.getServletContext().getRealPath("/")  获取项目所在服务器的全路径,如:D:\Program Files\apache-tomcat-7.0.25\webapps\TestSytem\ request.getServletPath()    获取客户端请求的路径名,如:/object/delObject request.getServerName()    获取服务器地址,如:localhost request.getServerPo

python装饰器内获取函数有用信息方法

装饰器内获取函数有用信息方法 .__doc__用于得到函数注释信息 .__name_用于得到函数名 在函数引用装饰器的时候,函数名会变为装饰器内部执行该函数的名字,所有在直接执行函数名加.__doc__或__name_的时候得到的是,装饰器内部函数的注释信息和名字.因为函数名被替换了. 所以想得到实际的内容,需要引用一个模块,from functools import wraps,并在装饰器函数内部再加一个@wraps的形式改变,得到实际想得到的信息. 作用是在函数加上装饰器后让能够得到真正原来