分页读取手机联系人

<span style="font-size:18px;">/**
	 * 手机联系人个数
	 */
	public static int linkManCount = -1;
	/**
	 *  每页显示联系人个数
	 */
	public static int pageCount = 20;</span>
<span style="font-size:18px;">/**
	 * 获取手机联系人,并返回
	 *
	 * @param mContext
	 *            上下文对象
	 * @param pageSize
	 *            当前需要获取第几页数据
	 * @return
	 */
	public ArrayList<helperPoSort> getLinkMan(Context mContext, int pageSize
			) {
		ArrayList<helperPoSort> linkMans = new ArrayList<helperPoSort>();
		ContentResolver cr = mContext.getContentResolver();
		// 取得电话本中开始一项的光标
		Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
				null, null, null);
		// 向下移动光标
		linkManCount = cursor.getCount();
		if (cursor != null && ((pageSize - 1) * pageCount) < linkManCount) {
			cursor.moveToPosition((pageSize - 1) * pageCount);
			int i = 0;
			while (cursor.moveToNext()) {
				if (i < pageCount) {
					Cursor phone = null;
					String contact = null;
					try {
						// 取得联系人名字
						int nameFieldColumnIndex = cursor
								.getColumnIndex(PhoneLookup.DISPLAY_NAME);
						contact = cursor.getString(nameFieldColumnIndex);
						// 取得电话号码
						String ContactId = cursor.getString(cursor
								.getColumnIndex(ContactsContract.Contacts._ID));
						phone = cr
								.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
										null,
										ContactsContract.CommonDataKinds.Phone.CONTACT_ID
												+ "=" + ContactId, null, null);
					} catch (Exception e) {
						LogUtil.d("TAG", "获取联系人时,在游标获取phone时报错!");
						break;
					}
					LogUtil.d("TAG", "Cursor phone" + phone);
					if (phone != null) {
						while (phone.moveToNext()) {
							String Number = phone
									.getString(phone
											.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
							// string += (contact + ":" + Number + "");
							helperPoSort man = new helperPoSort();
							man.setStr1(contact);
							man.setStr2(Number);
							LogUtil.d("TAG", contact + ":" + Number + "");
							linkMans.add(man);
						}
					}
					i = i + 1;
				} else {
					break;
				}
			}
		}
		cursor.close();
		return  linkMans;
	}</span>

需要权限:<uses-permission android:name="android.permission.READ_CONTACTS" />

时间: 2024-11-03 22:10:14

分页读取手机联系人的相关文章

手势识别=读取手机联系人=ContentResolver-Day3

手势识别=读取手机联系人=ContentResolverDay32 mobile3.0 手机设置向导页面完成 选择器没有做完成 样式提取完成 自定义控件的优化继续 抽取父类Activity 完成 手机读取联系人. 问题堆栈 自定义控件深入理解自定义ListView 是时候研究框架和设计XUtils4个模块 明天仔细研究窗口过度动画. 4. 手势控制GestureDetector 手势在Activity里面有一个onTouchEvent(MotionEvent event)方法,参数就是用户在屏幕

Android 读取手机联系人、拨号、发送短信及长按菜单的操作

本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要用ListView列表控件展示手机联系人 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/a

Android使用READ_CONTACTS读取手机联系人

实例代码: package com.example.readcontacts; import java.io.InputStream; import java.util.ArrayList; import android.app.ListActivity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import androi

旺仔:Content Provider读取手机联系人

//联系人信息 public void bt5_OnClick(View v) { //得到调用者 ContentResolver contentResolver=getContentResolver(); //准备URI // ContactsContract.Contacts.CONTENT_URI; //调用提供者 Cursor cursor=contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, n

怎么用getContentResolver().query读取手机短信

============问题描述============ 用这个能读取手机联系人并显示在一个list中,所有短信也是保存在手机里的一个数据库,同理能不能用这个方法读取并显示短信呢?求解 ============解决方案1============ 可以的,uri改为 "content://sms/"就是.

浅谈android中手机联系人字母索引表的实现

实际上字母索引表的效果,可以说在现在的众多APP中使用的非常流行,比如支付宝,微信中的联系人,还有购物,买票的APP中选择全国城市,切换城市的时候,这时候的城市也就是按照一个字母索引的顺序来显示,看起来是很方便的.其实这种字母索引表的效果最开始是出现在微信的联系人中.因为觉得这种效果功能在今后的项目中可以说是非常常见,可能会用的上,所以准备来波博客讲述一下实现的原理,一来方便以后自己复习,二来如果能够帮助一些android路上奋斗小伙伴也是蛮有意义的. 下面我们先来看下效果图, 看完效果图后我们

[小项目] 获取手机联系人并且向服务器发送JSON数据

[小项目] 获取手机联系人并且向服务器发送JSON数据 好久没有写文档了...最近忙着带班,也没有时间学习新东西,今天刚好有个小Demo,就写了一下,顺便丰富一下我的博客吧! 首先说一下需求: 简单的说,就是一个程序,会获取手机的联系人列表,然后转换成JSON字符串数组,向指定服务器中发送数据...总感觉有侵犯别人隐私权的意味; 注:仅供学习使用,不要做违法的事情哟 这个程序我写的有点有条理,首先有几个工具类: 1. 判断是否联网的工具类(NetUtils) 2. 从手机中获取所有联系人的工具类

android 读取手机通讯录并显示listview

脉脉中注册时有一个,我已开启权限: 这个原理: 1.如果通讯录为空,脉脉就不让你往下进行, 2.如果没有开启权限,脉脉就不让你往下进行, 3.如果开启权限且通讯录为空,脉脉就不让你往下进行, 4.如果开启权限且通讯录不为空,脉脉才能让你往下进行. 读取通讯录权限 <!-- 读取联系人权限 --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 拨打电话权限 -

Android读取选择联系人的模版代码实现

1.创建SelectContactActivity类,在AndroidManifest.xml添加类 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.content.Intent;