Android 获取通讯录联系人

public static Map<String,String> getAllCallRecords(Context context) {
		Map<String,String> temp = new HashMap<String, String>();
		Cursor c = context.getContentResolver().query(
				ContactsContract.Contacts.CONTENT_URI,
				null,
				null,
				null,
				ContactsContract.Contacts.DISPLAY_NAME
						+ " COLLATE LOCALIZED ASC");
		if (c.moveToFirst()) {
			do {
				// 获得联系人的ID号
				String contactId = c.getString(c
						.getColumnIndex(ContactsContract.Contacts._ID));
				// 获得联系人姓名
				String name = c
						.getString(c
								.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
				// 查看该联系人有多少个电话号码。如果没有这返回值为0
				int phoneCount = c
						.getInt(c
								.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
				String number=null;
				if (phoneCount > 0) {
					// 获得联系人的电话号码
					Cursor phones = context.getContentResolver().query(
							ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
							null,
							ContactsContract.CommonDataKinds.Phone.CONTACT_ID
									+ " = " + contactId, null, null);
					if (phones.moveToFirst()) {
						number = phones
								.getString(phones
								.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
						}
					phones.close();
				}
				temp.put(name, number);
			} while (c.moveToNext());
		}
		c.close();
		return temp;
	}

Android 获取通讯录联系人

时间: 2024-10-24 20:39:00

Android 获取通讯录联系人的相关文章

Android手机获取通讯录联系人信息及短信广播实现

现在越来越多的android应用在注册时都要用到手机号码,通过获取手机验证码来完成注册.也有不少应用提供了手机通讯录备份功能,获得你的允许后把你的通讯录中的手机号码保存到服务器中,你要的时候又可以down下来,比如微信,QQ等就有这们的功能.那我们怎么样获取用户通讯录中的手机号码呢?Android已经为我们做好了准备: ---------------------------------获取通讯录联系人信息----------------------------------------------

Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话 主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码 注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上: / 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写

Android获取全部联系人信息的例子

先定义一个显示条目的xml布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_conte

Android获取通讯录并上传(包含通讯录加密)

好久没更新文章了,近期在做通讯录上传,把它分享出来,送给需要的朋友. 写了一个通讯录工具类,直接放代码吧,关键位置通过注释来解释. 这个工具类包含通讯录获取,加密,然后上传操作.看不懂的可以留言 import android.database.Cursor; import android.os.AsyncTask; import android.provider.ContactsContract; import android.util.Base64; import com.demo.alfar

android 获取通讯录并显示listview

网上找的demo 每一段都有详细注释 关键代码如下: 权限: <!-- 读取联系人权限 --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 拨打电话权限 --> <uses-permission android:name="android.permission.CALL_PHONE" /> 代码: package co

用ContentProvider获取通讯录联系人

手机中的联系人数据实际是保存在数据库中的,但Android并没有让我们通过操作数据库去读取数据,而是通过一个ContractProvider这个应用提供了一个ContentProvider访问接口. 获取email的方法与获取电话号码相同. 具体实现过程如下: 添加应用权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name

Android 选择通讯录联系人回显

1.启动系统选择联系人界面 Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); 2.重写OnActivityResult方法获取数据 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { s

Android批量添加联系人到通讯录

由于工作上的需要,把数据库中备份的联系人添加到通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率就降低了,如果把所有的数据都添加进去后再commit效率就不一样,这就需要事务 没有添加事务的方法,每次添加一条记录 /** * 单条添加数据 * * @param contacts * @return */ public boolean add(Tb_contacts contacts) { SQLiteDatabase db = helper.getWritableData

关于Android下Delphi XE7获取通讯录的问题

在网上感到一篇高人写的代码XE6下获取通讯录的,但是弄到XE7不能用了,原因是TJavaObjectArray变成泛型了,弄了半天没有搞懂TJavaObjectArray怎么使用,老是出错,不过研究了下Androidapi.JNI.Provider下的源代码,发现操作Android数据库的几个函数,坐下记录 下面是我修改的可以获取到数据库用户的代码: uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Graphi