[android] 手机卫士读取联系人详解手机开发
2023-06-13 09:20:13 时间
获取ContentResolver内容解析器对象,通过getContentResolver()方法
调用ContentResolver对象的query()方法,得到raw_contacts表里面的数据,得到Cursor对象
参数:Uri对象,字段String数组
获取Uri对象,通过Uri.parse(“content://com.android.contacts/raw_contacts”)方法,
while循环Cursor对象,条件是Cursor对象moveToNext()方法为真
调用Cursor对象的getString()方法,参数是索引
判断不为null,查询另一张表
调用ContentResolver对象的query()方法,得到data表里面的数据,得到Cursor对象
参数:Uri对象,字段String[]数组(data1,mimetype),条件String,条件值String[]数组(contact_id)
Uri对象是Uri.parse(“content://com.android.contacts/data”)
循环和上面一样
姓名对应的类型是vnd.android.cursor.item/name
电话对应的类型是vnd.android.cursor.item/phone_v2
需要权限,android.permisssion.READ_CONTACTS
调用ListView对象的setAdapter()方法,分配数据到视图,参数是Adapter对象
通过new SimpleAdapter()来获得Adapter对象
参数:上下文,数据集合,布局资源,字段String[]数组,控件int[] id数组
package com.qingguow.mobilesafe.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; * 读取手机联系人 * @author taoshihan public class PhoneContactsUtil { public static List Map String,String getContacts(Context context){ ContentResolver resolver=context.getContentResolver(); Uri uri=Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); List Map String,String contacts=new ArrayList Map String,String (); //循环联系人表 Cursor cursor=resolver.query(uri, new String[]{"contact_id"}, null, null, null); while(cursor.moveToNext()){ String id=cursor.getString(cursor.getColumnIndex("contact_id")); if(id!=null){ Map String,String contact=new HashMap String,String (); //查找数据表 Cursor dataCursor=resolver.query(dataUri, new String[]{"data1","mimetype"},"raw_contact_id=?", new String[]{id}, null); while(dataCursor.moveToNext()){ String data1=dataCursor.getString(dataCursor.getColumnIndex("data1")); String mimetype=dataCursor.getString(dataCursor.getColumnIndex("mimetype")); System.out.println("data1:"+data1+",mimetype:"+mimetype); if(mimetype.equals("vnd.android.cursor.item/name")){ contact.put("name", data1); }else if(mimetype.equals("vnd.android.cursor.item/phone_v2")){ contact.put("phone", data1); contacts.add(contact); dataCursor.close(); cursor.close(); return contacts; }
5427.html
app程序应用开发手机开发无线开发移动端开发相关文章
- Burp Suite 抓Android手机应用包教程[通俗易懂]
- android 安装p12证书,如何在Android中使用p12证书(客户端证书)
- android线程间通信的几种方法_Android进程间和线程间通信方式
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- Android ConstraintLayout约束布局的居中详解手机开发
- 基于Android官方AsyncListUtil优化经典ListView分页加载机制(二)详解手机开发
- Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案详解手机开发
- Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果详解手机开发
- Android弹出选项框及指示箭头动画选择详解手机开发
- Android动态Java代码调整window大小详解手机开发
- 使用 Go 进行 iOS 和 Android 编程详解手机开发
- iOS 和 Android 哪个更利于赚钱呢详解手机开发
- Android开发 10个常用工具类详解手机开发
- Android自定义悬浮按钮效果实现,带移动效果详解手机开发
- [android] 练习viewpagerindicator的使用(二)详解手机开发
- [android] 手机卫士输入框抖动和手机震动详解手机开发
- [android] 手机卫士自定义滚动控件详解手机开发
- [android] 保存文件到SD卡详解手机开发
- android decorView详解手机开发
- android galley实现画廊效果详解手机开发
- Android 常用的ORM框架详解手机开发
- android orm持久层框架详解手机开发
- android个推平台详解手机开发
- Android开发——新特性与知识点回顾详解手机开发
- android ble详解手机开发
- Android 屏幕刷新机制:ViewRootImpl、Choreographer、Surface、SurfaceFlinger关系详解手机开发
- Android ImageView、TextureView、自定义View显示图片详解手机开发