【实用篇】获取Android通讯录中联系人信息
第一步,在Main.xml布局文件中声明一个Button控件,布局文件代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<Button 
        android:id="@+id/query_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="点击查询联系人信息"/>
</LinearLayout>
第二步:在Activity中写入代码,读取联系人姓名和联系人电话信息,Activity代码如下:
public class MainActivity extends Activity {
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
		    super.onCreate(savedInstanceState);
		    // 指定页面布局
		    setContentView(R.layout.main);
		    // 声明一个Button按钮
		    Button queryBtn = (Button) findViewById(R.id.query_btn);
		    // 新建一个点击事件监听器对象
		    OnClickListener ocl = new OnClickListener() {
      @Override
			      public void onClick(View v) {
				      ContentResolver contentResolver = getContentResolver();
				      // 获得所有的联系人
				      Cursor cursor = contentResolver.query(
						      ContactsContract.Contacts.CONTENT_URI, null, null,
						      null, null);
      // 循环遍历
				      if (cursor.moveToFirst()) {
        int idColumn = cursor
							        .getColumnIndex(ContactsContract.Contacts._ID);
        int displayNameColumn = cursor
							        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
        do {
						          // 获得联系人的ID号
						          String contactId = cursor.getString(idColumn);
						          // 获得联系人姓名
						          String disPlayName = cursor
								          .getString(displayNameColumn);						
						          // 查看该联系人有多少个电话号码。如果没有这返回值为0
						          int phoneCount = cursor
								          .getInt(cursor
										          .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
						          //在联系人数量不为空的情况下执行
						          if (phoneCount > 0) {
							            // 获得联系人的电话号码列表
							            Cursor phonesCursor = getContentResolver()
									            .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
											            null,
											            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
													            + " = " + contactId, null,
											            null);
							            if (phonesCursor.moveToFirst()) {
								              do {
									                // 遍历所有的电话号码
									                String phoneNumber = phonesCursor
											                .getString(phonesCursor
													                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
									                Toast.makeText(MainActivity.this,
											                "联系人姓名:" + disPlayName+"\n联系人电话:" + phoneNumber,
											                Toast.LENGTH_LONG).show();
								               } while (phonesCursor.moveToNext());
							              }
						            }
          } while (cursor.moveToNext());
				        }
			      }
		    };
		    // 为按钮设置监听器
		    queryBtn.setOnClickListener(ocl);
	  }
}
第三步:在AndroidManifest.xml中添加<uses-permission android:name="android.permission.READ_CONTACTS" />来获得访问通讯录的权限,添加完成或即可运行程序获取联系人信息.

【实用篇】获取Android通讯录中联系人信息的更多相关文章
- Android_(控件)使用ListView显示Android系统中联系人信息
		使用ListView显示手机中联系人的姓名和电话号码 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: (避免泄露信息对部分地方进行了涂鸦O(∩_ ... 
- android之读取联系人信息
		联系人信息被存放在一个contacts2.db的数据库中 主要的两张表 读取联系人 读取联系人需要知道联系人内容提供者的地址,以及对应的操作对象.一般情况下操作对象是的命名方式和表明是一致的. 布局文 ... 
- iOS 获得通讯录中联系人的所有属性--b
		ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBookCopyArrayOfA ... 
- IOS 获取系统通讯录中的联系人信息
		- (IBAction)getAllContactFromSystem { ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, NUL ... 
- 如何获取Android系统中申请对象的信息
		最近一直在做有关内存方面的优化工作,在做优化的过程,除了关注内存的申请量以及GC的情况之外,我们经常需要想方法找出是那些对象占用了大量内存,以及他们是如何导致GC的,这意味着我们需要获取对象申请的信息 ... 
- iOS获取通讯录所有联系人信息
		以下是2种方式: 第一种方法: GetAddressBook.h #import <Foundation/Foundation.h> @interface GetAddressBook : ... 
- JNI 开发基础篇:Android开发中os文件的探索
		正题: android开发中,时长会遇到os文件的使用,那么os文件到底是什么?在这篇文章中会进行说明. .os文件在android中意味着C语言书写的方法,经android提供的ndk进行编译,从而 ... 
- ios 获得通讯录中联系人的所有属性 亲测,可行 兼容io6 和 ios 7
		//获取通讯录中的所有属性,并存储在 textView 中,已检验,切实可行.兼容io6 和 ios 7 ,而且ios7还没有权限确认提示. -(void)getAddressBook { ABAdd ... 
- 关于Android的Build类——获取Android手机设备各种信息
		经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private ... 
随机推荐
- 比较排序算法(PHP)
			冒泡排序 两两比较相邻记录的关键字,如果反序则交换,大的数字往下沉,一直到最大的出现在数组最后 function swap(&$x, &$y) { $temp = $x; $x = $ ... 
- vue之computed和watch
			计算属性 computed 侦听器or观察者 watch 一直以来对computed和watch一知半解,用的时候就迷迷糊糊的,今天仔细看了看文档,突然茅塞顿开,原来就是这么简单啊: computed ... 
- Oracle学习总结(7)—— 常用的数据库索引优化语句总结
			不管是用C/C++/Java等代码编写的程序,还是SQL编写的数据库脚本,都存在一个持续优化的过程.也就是说,代码优化对于程序员来说,是一个永恒的话题. 近期,我们对之前编写的数据库脚本进行了全面的自 ... 
- MarkDown写作之嵌入LaTeX和HTML
			本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49788741 Markdown 是一种 ... 
- C++归并排序总结
			#include <iostream> using namespace std; //归并排序非递归版. void Sort(int a[], int n,int high) { int ... 
- java webproject中logback换配置文件的路径
			本人小站点: http://51kxd.com/ 欢迎大家不开心的时候訪问訪问,调节一下心情 web.xml中配置: <!-- windows logback.xml文件跟web容器(比 ... 
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号
			Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ... 
- 每一个人都懂得敏捷开发 (软件project), 为何产品开发的效率与质量还是这么的烂?
			敏捷开发(软件project)是 "设计" 出来的.不是 "学" 来的-- 很多人都一直在质疑敏捷开发能否提高效率与质量? 更有不少人以嘲讽.不屑的口吻看待软件 ... 
- JNI 资源释放
			JNI 编程实现了 native code 和 Java 程序的交互,因此 JNI 代码编程既遵循 native code 编程语言的编程规则,同时也遵守 JNI 编程的文档规范.在内存管理方面,na ... 
- FZOJ--2212--Super Mobile Charger(水题)
			Problem 2212 Super Mobile Charger Accept: 3 Submit: 11 Time Limit: 1000 mSec Memory Limit : 32 ... 
