Android 联系人的读取,查询,添加

先加读和写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.WRITE_CONTACTS" />  

获取所有联系人,方法1:

<span style="font-size:14px;">/**
	 * 获取联系人,方式1
	 */
	private void getContact1() {

		String uristring = "content://com.android.contacts/contacts";
		Uri uri = Uri.parse(uristring);
		ContentResolver resolver = getApplicationContext().getContentResolver();
		Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null,
				null);
		StringBuilder jpsb = new StringBuilder();
		while (cursor.moveToNext()) {

			int contactid = cursor.getInt(0);
			jpsb = jpsb.append("contactid = " + contactid);

			String uristring2 = "content://com.android.contacts/contacts/"
					+ contactid + "/data";
			Uri uri2 = Uri.parse(uristring2);
			Cursor datacCursor = resolver.query(uri2, new String[] {
					"mimetype", "data1", "data2" }, null, null, null);

			while (datacCursor.moveToNext()) {

				String type = datacCursor.getString(datacCursor
						.getColumnIndex("mimetype"));
				String data1 = datacCursor.getString(datacCursor
						.getColumnIndex("data1"));
				if (type.equals("vnd.android.cursor.item/name"))// 姓名
				{
					jpsb.append(",name =").append(data1);

				} else if (type.equals("vnd.android.cursor.item/phone_v2")) {// 电话
					jpsb.append(",phone = ").append(data1);

				}

			}
			jpsb.append("\n");
			if (datacCursor != null) {
				datacCursor.close();
			}

		}

		Log.i(TAG, jpsb.toString());

		textView.setText(jpsb.toString());
		if (cursor != null) {
			cursor.close();
		}
	}</span>
获取联系人,方法2:

<span style="font-size:14px;">/**
	 * 获取联系人,方式2
	 */
	private void getContact2() {
		string = "";
		count = 0;
		ContentResolver resolver = getApplicationContext().getContentResolver();

		Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,
				null, null, null, null);

		while (cursor.moveToNext()) {

			// 取得联系人的名字索引
			int nameIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
			String contact = cursor.getString(nameIndex);
			string += contact + ":";
			// 取得联系人的ID索引值
			String contactId = cursor.getString(cursor
					.getColumnIndex(ContactsContract.Contacts._ID));

			// 查询该位联系人的电话号码,类似的可以查询email,photo
			Cursor phone = resolver.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));
				string = string + strPhoneNumber + " ;";

			}

			string += "\n";
			count++;
			phone.close();
		}
		cursor.close();
		Log.i(TAG, String.valueOf(count));
		// 设置显示内容
		textView.setText(string);

		// 这里需要将String写入文件

	}</span>


获取联系人,方法3:

public class GetNumber {

	private static String number;
	private static String contactName;
	private static List<PhoneInfo> lists = new ArrayList<PhoneInfo>();

	/**
	 * 获取通讯录中的联系人姓名及电话号码
	 * 
	 * @param context
	 * @return
	 */
	public static List<PhoneInfo> getPhoneNum(Context context) {
		Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,
				null, null, null, null);

		while (cursor.moveToNext()) {

			number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
			contactName = cursor.getString(cursor
					.getColumnIndex(Phone.DISPLAY_NAME));
			PhoneInfo info = new PhoneInfo(number, contactName);
			// System.out.println("number :" + number + ",name: " +
			// contactName);
			lists.add(info);

		}
		return lists;
	}
}



添加联系人

<span style="font-size:14px;">/**
	 * 在同一个事务中完成联系人各项数据的添加
	 * 
	 * 添加联系人
	 * 
	 * @throws Exception
	 */
	public void addContact() {

		String uriString = "content://com.android.contacts/raw_contacts";
		Uri uri = Uri.parse(uriString);
		ContentResolver resolver = getApplicationContext().getContentResolver();
		ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
		ContentProviderOperation operation1 = ContentProviderOperation
				.newInsert(uri).withValue("account_name", null).build();
		operations.add(operation1);
		// 添加姓名
		uri = Uri.parse("content://com.android.contacts/data");
		ContentProviderOperation operation2 = ContentProviderOperation
				.newInsert(uri).withValueBackReference("raw_contact_id", 0)
				.withValue("mimetype", "vnd.android.cursor.item/name")
				.withValue("data2", "SB").build();
		operations.add(operation2);
		// 添加电话

		uri = Uri.parse("content://com.android.contacts/data");
		ContentProviderOperation operation3 = ContentProviderOperation
				.newInsert(uri).withValueBackReference("raw_contact_id", 0)
				.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
				.withValue("data2", "2").withValue("data1", "18810466333")
				.build();
		operations.add(operation3);

		try {
			resolver.applyBatch("com.android.contacts", operations);

		} catch (RemoteException e) {
			e.printStackTrace();

		} catch (OperationApplicationException e) {
			e.printStackTrace();
		} finally {

		}

	}
</span>

代码下载:http://download.csdn.net/detail/leokelly001/8128721


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值