利用ContentProvider获取联系人列表
来源:互联网 发布:qq tim 知乎 编辑:程序博客网 时间:2024/05/18 01:45
最近学习了Android四大组件之一的ContentProvider,Android系统通过ContentProvider为应用程序之间共享数据提供了统一的接口。
Android已经为常见的一些数据提供了默认的ContentProvider。手机里面的联系人信息是以sqlite数据表的形式存储在系统的数据库中的,所以我们若要取到系统的联系人,就得依托于这个类。我们通过一个uri就可以获得这个数据库的一些操作方法,从而对联系人进行增删改查。
有的系统提供的uri,当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法。 ContentResolver使用insert、delete、update、query方法,来操作数据。
public static List<Contact> getAllContact(Context context) {List<Contact>list=new ArrayList<Contact>();//利用系统的ContactProvider来查询联系人信息//数据来自contacts,data表ContentResolver cr = context.getContentResolver();String[]projection =new String[]{ContactsContract.Contacts._ID,ContactsContract.Contacts.PHOTO_ID};Cursor cursor=cr.query(ContactsContract.Contacts.CONTENT_URI, projection, null, null, null);//遍历从contacts数据表中的数据集while(cursor.moveToNext()){Contact contact=new Contact();contact.set_id(cursor.getInt(0));contact.setPhoto_id(cursor.getInt(1));//利用联系人的_id,到Data表中继续查询ContentResolver cr2=context.getContentResolver();Cursor cursor2=cr2.query(ContactsContract.Data.CONTENT_URI,new String[]{Data.MIMETYPE,Data.DATA1},Data.RAW_CONTACT_ID+"=?", new String[]{String.valueOf(contact.get_id())},null);//从data表中取回的,特定id联系人的具体数据while(cursor2.moveToNext()){String mimeTypeString=cursor2.getString(0);if (mimeTypeString.equals("vnd.android.cursor.item/email_v2")) {contact.setEmail(cursor2.getString(1));}if (mimeTypeString.equals("vnd.android.cursor.item/name")) {contact.setName(cursor2.getString(1));}if (mimeTypeString.equals("vnd.android.cursor.item/phone_v2")) {contact.setPhone(cursor2.getString(1));}if (mimeTypeString.equals("vnd.android.cursor.item/postal-address_v2")) {contact.setAddress(cursor2.getString(1));}if (mimeTypeString.equals("vnd.android.cursor.item/photo")) {//contact.setPhoto_id(cursor2.getInt(1));//int photo=contact.get_id();//long i=photo;/*InputStream input=ContactsContract.Contacts.openContactPhotoInputStream(cr2,ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,(long)contact.get_id()//Long.parseLong(String.valueOf(contact.getPhoto_id()))//photo));contact.setPhotoBitmap(BitmapFactory.decodeStream(input));*/}}cursor2.close();if (TextUtils.isEmpty(contact.getName())) {contact.setName(contact.getPhone());}list.add(contact);}cursor.close();return list;}
0 0
- 利用ContentProvider获取联系人列表
- Android:ContentProvider获取手机联系人列表
- Android 利用ContentProvider获取联系人信息
- Android 开发 ContentProvider 获取歌曲列表和联系人的例子
- Android 开发 ContentProvider 获取歌曲列表和联系人的例子
- ContentProvider获取联系人信息
- ContentProvider如何获取联系人
- ContentProvider获取手机联系人
- ContentProvider获取手机联系人
- 获取手机联系人(Contentprovider)
- 利用ContentProvider获取手机中联系人的信息
- 利用系统ContentProvider增加联系人
- 利用ContentProvider查询手机联系人
- 数据存储:ContentProvider获取联系人
- android-ContentProvider获取联系人信息
- Android-contentprovider 获取手机联系人
- ContentProvider之获取手机联系人
- 26.获取系统联系人ContentProvider
- 信息学奥林匹克竞赛-图灵简介
- Shell将文件后缀重命名
- ORACLE如何停止一个JOB
- 学习笔记4
- 2016年1月之 make each day count
- 利用ContentProvider获取联系人列表
- 信息学奥林匹克竞赛-冯·诺依曼
- 1044. 火星数字(20)
- C++中使用IXMLHTTPRequest对象调用Web API时,对URL中的特殊字符(或中文)编码
- HDU 1009 FatMouse' Trade 贪心
- 随机采样和随机模拟
- Android ScrollView滚动条
- Delphi,WebBrowser模拟点击按钮
- CF 1A.Theatre Square