获取手机上的联系人的详细信息
2013-04-08 13:58
274 查看
我原本从网上找了好多源码。都是是从手机上获得的联系人,可是运行之后才是all联系人。其实在数据库里有个字段用于区分手机和sim。
ContactsContract.RawContacts.ACCOUNT_TYPE,就是这个字段。
有两种type。以我用的华为手机为例。com.android.huawei.phone和com.android.huawei.sim
接下来你懂了吧。
这下你懂了把。
至于更详细的信息:包括:邮箱地址,。家庭地址。IM地址。头像。
获取家庭地址:
获取邮件地址:
获取im地址:
其中im有包含name和type两个。属性。这个可以看看自己的联系人。其中QQ为3/
头像的获得:
先获得photoid。然后根据photoid再得到头像数据。头像使用blob类型存储的。直接转换即可。
根据id转为bitmap:
以上代码亲测可用。因为都是可用的代码片段。粘帖即可使用。不再附源码。
ContactsContract.RawContacts.ACCOUNT_TYPE,就是这个字段。
有两种type。以我用的华为手机为例。com.android.huawei.phone和com.android.huawei.sim
接下来你懂了吧。
ContentResolver cr = this.getContentResolver(); //取得电话本中开始一项的光标 Cursor cursor = cr.query(Phone.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { ContactInfo cci = new ContactInfo(); // 取得联系人ID int id = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String typeString=cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE)); if (typeString.contains("sim")) { continue; } }
这下你懂了把。
至于更详细的信息:包括:邮箱地址,。家庭地址。IM地址。头像。
获取家庭地址:
ArrayList<Address> addrList = new ArrayList<Address>(); String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] whereParameters = new String[]{id+"", ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI, null, where, whereParameters, null); while(addrCur.moveToNext()) { String poBox = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); String type = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); Address a = new Address(poBox, street, city, state, postalCode, country, type); addrList.add(a); //System.out.println("adress________>"+a.getCity()+a.getCountry()+a.getPoBox()+a.getState()+a.getStreet()+a.getType()); }
获取邮件地址:
ArrayList<Email> emails = new ArrayList<Email>(); Cursor emailCur = cr.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id+""}, null); while (emailCur.moveToNext()) { Email e = new Email(emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)) ,emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)) ); emails.add(e); // System.out.println("emial-------------->"+e.getAddress()+e.getType()); } emailCur.close();
获取im地址:
其中im有包含name和type两个。属性。这个可以看看自己的联系人。其中QQ为3/
ArrayList<IM> imList = new ArrayList<IM>(); String where2 = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] whereParameters2 = new String[]{id+"", ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI, null, where2, whereParameters2, null); if (imCur.moveToFirst()) { String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); String imType; imType = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); if (imName.length() > 0) { IM im = new IM(imName, imType); imList.add(im); // System.out.println("QQ========>"+im.getName()+im.getType()); } } imCur.close();
头像的获得:
先获得photoid。然后根据photoid再得到头像数据。头像使用blob类型存储的。直接转换即可。
cci.setPhotoId(cursor.getString( 4000 cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID))); System.out.println(cci.getDisplayName()+"头像id"+cci.getPhotoId()); if (cci.getPhotoId()!=null) { bitmap a=ContactImageLoader.loadImageFromUrl(this, cci.getPhotoId()); }else { Log.i(cci.getDisplayName(), "头像为空"); }
根据id转为bitmap:
public synchronized static Bitmap loadImageFromUrl(Context ct,String photo_id) { Bitmap d = null; try{ String[] projection = new String[]{ContactsContract.Data.DATA15}; String selection = "ContactsContract.Data._ID = " + photo_id; Cursor cur = ct.getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null); cur.moveToFirst(); byte[] contactIcon = null; if(cur.getBlob(cur.getColumnIndex(ContactsContract.Data.DATA15))!=null){ contactIcon=cur.getBlob(cur.getColumnIndex(ContactsContract.Data.DATA15)); d=BitmapFactory.decodeByteArray(contactIcon, 0, contactIcon.length); } } catch (Exception e) { e.printStackTrace(); } return d; }
以上代码亲测可用。因为都是可用的代码片段。粘帖即可使用。不再附源码。
相关文章推荐
- Andrid——获取手机中联系人详细信息
- android 获取手机联系人信息
- Android中获取手机中的联系人信息
- Android初级教程获取手机系统联系人信息
- Phone---获取手机联系人信息
- Android获取手机内联系人信息
- 获取手机通讯录联系人信息
- ios开发之获取手机通讯录中所有联系人的信息二
- 通过内容提供器获取手机联系人信息
- Android 通过手机文件夹路径,得到 某张 照片 的 详细/详情/信息的获取
- Android中获取手机中的联系人信息
- Android中获取手机中的联系人信息
- 越狱的 ios 如何 获取 读取 提取 手机上的 短信 通话记录 联系人 等信息
- iOS开发之获取手机通讯录联系人信息<二>
- 通过ContentResolver获取手机中的联系人信息
- adb获取手机某个apk的版本号、详细应用信息命令
- Android 获取手机联系人信息
- Android基础教程(四)之------获取手机联系人信息
- iOS开发之获取手机通讯录联系人信息<一>
- 获取手机联系人信息