android 联系人存储结构

23 篇文章 1 订阅

名字:

Uri: Uri.parse("content://com.android.contacts/data")

DISPLAY_NAME = “data1”; //姓名

GIVEN_NAME = "data2";//名 

FAMILY_NAME = "data3";//姓氏 

PREFIX = "data4"; //名称前缀

MID_NAME = "data5";//中间名 

String SUFIX = "data6"; //名称后缀

String SUFIX_PINYIN="data7"; //名字拼音

MID_PINYIN="data8"; //中间名拼音 

String FAMILY_NAME_PINYIN="data9"; //姓氏拼音

电话:

Uri: Uri.parse("content://com.android.contacts/data/phones"

phone: "data1";//号码

Type: "data2";//这个字段是整形值,指示电话类型

类型对应关系如下:

TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_MOBILE = 2;TYPE_WORK = 3;TYPE_FAX_WORK = 4;TYPE_FAX_HOME = 5;TYPE_PAGER = 6;TYPE_OTHER = 7;

 

Email:

Uri:Uri.parse("content://com.android.contacts/data/emails")

Email: "data1";//邮箱地址

Type: "data2";//这个字段是整形值,指示Email类型

类型对应关系如下:

TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_WORK = 2;TYPE_OTHER = 3;TYPE_MOBILE = 4;

 

地址:

Uri:Uri.parse("content://com.android.contacts/data/postals")

STREET="data4";//街道CITY="data8";//城市STATE="data7";//州ZIP_CODE="data9";//邮政编码

Type:"data2";//type的类型如下

TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_WORK = 2;TYPE_OTHER = 3;

Uri uri = ContactsContract.RawContacts.CONTENT_URI;// "content://com.android.contacts/contacts"); //访问raw_contacts表
		ContentResolver resolver = mContext.getContentResolver();

		final String[] projection = new String[] { Data._ID, "sort_key" };
		Cursor cursor = resolver.query(uri, projection, null, null, "sort_key COLLATE LOCALIZED asc"); //

		ArrayList<YVContactDBBean> ciList = new ArrayList<YVContactDBBean>();
		ArrayList<Integer> contactId = new ArrayList<Integer>();

		while (cursor.moveToNext()) {
			contactId.add(cursor.getInt(0));// 获得id并且在data中寻找数据
			Log.e(" getPhoneAllContact", " contactId=" + cursor.getInt(0));
		}

		ArrayList<Cursor> contactsData = new ArrayList<Cursor>();
		for (int id : contactId) {
			uri = Uri.parse("content://com.android.contacts/contacts/" + id + "/data"); //
			// 如果要获得data表中某个id对应的数据,则URI为content://com.android.contacts/contacts/#/data
			Cursor cursor2 = resolver.query(uri, new String[] { Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5, Data.DATA6, Data.DATA7,
					Data.DATA8, Data.DATA9, Data.MIMETYPE }, null, null, null); //
			// data1存储各个记录的总数据,mimetype存放记录的类型,如电话、email等
			String phoneNumber = "";
			String name = "";
			String firstName = "";
			String lastName = "";
			int phoneTag = 0;
			try {
				YVContactDBBean contactInfo = new YVContactDBBean();
				while (cursor2.moveToNext()) {

					if (cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/name")) { // 如果是名字
						name = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
						contactInfo.setAcronym(ToPinYin.getFirstPinYin(name));
						contactInfo.setName(name);
						contactInfo.setPinYin(ToPinYin.getPinYin(contactInfo.getName() + ""));

						// Log.e("name ", "name = " + name);// 全名

						lastName = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
						contactInfo.setLastName(lastName);
						// Log.e("name ", "GIVEN_NAME = " + lastName); // last

						firstName = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
						contactInfo.setFirstName(firstName);
						// Log.e("name ", "FAMILY_NAME = " + firstName);// first

					} else if (cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/phone_v2")) { // 如果是电话
						phoneNumber = CountryCode + cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
						// Log.e("phone ", " phoenNunber = " + phoneNumber);
						phoneNumber = phoneNumber.replaceAll(" ", "");
						phoneNumber = phoneNumber.replaceAll("-", "");
						contactInfo.setPhone(phoneNumber);

						phoneTag = cursor2.getInt(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
						contactInfo.setTag(phoneTag);
						// Log.e("phone ", " phoenType = " + phoneTag);
					}

				}
				if (null != name && !name.equals("") && null != phoneNumber && !phoneNumber.equals("")) {
					ciList.add(contactInfo);
					Log.e("+=============================", "=============================");
				}

				cursor2.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值