浅析Android手机卫士读取联系人

 更新时间:2016年04月14日 11:22:44   作者:陶士涵  
这篇文章主要介绍了浅析Android手机卫士读取联系人的相关内容,通过getContentResolver()方法获取获取ContentResolver内容解析器对象,对android手机卫士读取联系人相关知识感兴趣的朋友参考下吧

推荐阅读:

浅析Android手机卫士sim卡绑定

深入浅析Android手机卫士保存密码时进行md5加密

详解Android 手机卫士设置向导页面

浅析Android手机卫士关闭自动更新

浅析Android手机卫士自定义控件的属性

获取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;
}
}

以上内容是小编给大家介绍的android 手机卫士读取联系人的相关介绍,希望对大家有所帮助!

相关文章

  • Android中asset文件夹与raw文件夹的区别深入解析

    Android中asset文件夹与raw文件夹的区别深入解析

    本篇文章是对Android中的asset文件夹与raw文件夹区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android编程中@id和@+id的区别分析

    Android编程中@id和@+id的区别分析

    这篇文章主要介绍了Android编程中@id和@+id的区别,较为详细的分析讲述了Android中资源引入的原理及使用@id和@+id引入资源的具体用法,总结了二者的区别,需要的朋友可以参考下
    2016-01-01
  • 详解Android App中的AsyncTask异步任务执行方式

    详解Android App中的AsyncTask异步任务执行方式

    这篇文章主要介绍了Android App中的AsyncTask异步任务执行方式,文中举了一个打开网络图片的例子帮助大家直观理解,需要的朋友可以参考下
    2016-04-04
  • Android自定义view实现圆形、圆角和椭圆图片(BitmapShader图形渲染)

    Android自定义view实现圆形、圆角和椭圆图片(BitmapShader图形渲染)

    这篇文章运用实例代码介绍如何在Android中自定义view,使用BitmapShader图形渲染方法来实现圆形、圆角和椭圆的绘制,有需要的可以参考借鉴。
    2016-08-08
  • 你该知道的Gradle配置知识总结

    你该知道的Gradle配置知识总结

    这篇文章主要给大家介绍了关于Gradle配置的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友可以参考学习,下面随着小编来一起学习学习吧。
    2017-10-10
  • Android开发之ProgressDialog进度对话框用法示例

    Android开发之ProgressDialog进度对话框用法示例

    这篇文章主要介绍了Android开发之ProgressDialog进度对话框用法,简单介绍了ProgressDialog进度对话框常见函数功能,并结合实例形式分析了ProgressDialog组件创建及使用进度对话框相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • 关于Android中点击通知栏的通知启动Activity问题解决

    关于Android中点击通知栏的通知启动Activity问题解决

    这篇文章主要介绍了关于解决Android中点击通知栏的通知启动Activity问题的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Android自定义View制作仪表盘界面

    Android自定义View制作仪表盘界面

    这篇文章主要介绍了Android自定义View制作仪表盘界面的相关资料,首先需要自定义仪表盘的属性,在构造方法种获取自定义属性,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • Android JetPack组件的支持库Databinding详解

    Android JetPack组件的支持库Databinding详解

    DataBinding是Google发布的一个数据绑定框架,它能够让开发者减少重复性非常高的代码,如findViewById这样的操作。其核心优势是解决了数据分解映射到各个view的问题,在MVVM框架中,实现的View和Viewmode的双向数据绑定
    2022-08-08
  • Android 静默安装和卸载的方法

    Android 静默安装和卸载的方法

    本篇文章主要介绍了Android 静默安装和卸载的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论