在手机内部,对联系人信息存在对应的数据库。我们创建的而联系人信息都存在这张表中。如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注:

好了,现在可以根据数据库里面的数据来写代码了。

代码如下:

package com.itydl.getcontacts;import com.itheima.getcontacts.domain.Contact;import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){//通过内容提供者访问联系人数据库ContentResolver cr = getContentResolver();Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null);while(cursorContactId.moveToNext()){//获取联系人idString contactId = cursorContactId.getString(0);//1、2、3、4.....//根据contactId查询出联系人信息data1和mimetype(其实mimetype是做了一个封装,直接根据data表就能获取mimetype类型了)Cursor cursorData =  cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"}, "raw_contact_id = ?", new String[]{contactId}, null);Contact con = new Contact();while(cursorData.moveToNext()){//遍历查询的信息(第一次只遍历id号为1的;一次往下遍历)String data1 = cursorData.getString(0);//联系人一行里面的信息String mimetype = cursorData.getString(1);//mimetype类型//通过mimetype的判断,把data1存入对应的属性if("vnd.android.cursor.item/email_v2".equals(mimetype)){con.setEmail(data1);}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){con.setPhone(data1);}else if("vnd.android.cursor.item/name".equals(mimetype)){con.setName(data1);}}System.out.println(con.toString());}}}

当然获取手机联系人信息必须要生命权限的,这里就省略写出来

使用javabean把查询的数据全部保存了起来。当 点击查询按钮后,logcat输出结果如下:

所有联系爱人信息全部暴露无疑:

转载于:https://www.cnblogs.com/wanghang/p/6299646.html

Android初级教程获取手机系统联系人信息相关推荐

  1. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...

  2. Android初级教程调用手机拍照与摄像功能

    这个小案例建议在手机上运行. package com.example.camera;import java.io.File;import android.net.Uri; import android ...

  3. android 通过手机号码查询联系人,android获取手机通讯录联系人

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

  4. android获取手机通讯录联系人

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

  5. h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型

    Vue.js怎么获取手机系统型号.版本.浏览器类型 发布时间:2020-07-28 11:22:33 来源:亿速云 阅读:161 作者:小猪 这篇文章主要为大家展示了Vue.js怎么获取手机系统型号. ...

  6. App获取android分辨率,Android 获取手机及APP信息实例详解

    霜风渐紧寒侵被,听孤雁声嘹唳,一声声送一声悲.<御街行>中的这句诗用来形容这个季节的北京真是再合适不过了,霜风阵阵,跑步的时候也越来越舍不得脱去外套了,考验毅力的时刻到了! 言归正传,开发 ...

  7. Android获取手机应用程序包的信息

    2019独角兽企业重金招聘Python工程师标准>>> 今天写了一个获取手机程序相关信息的demo,以下是demo的运行结果. 这是项目的结构. 下面是项目的具体代码: 1.Main ...

  8. 在Android中快速获取手机的高级权限

    在Android中快速获取手机的高级权限 想要快速获取Android手机的ROOT权限吗?也许因为ROOT教程太复杂,也许因为不会进工程模式,让我们在使用Android手机时感觉像是开别人的车一样,总 ...

  9. iphone 获取手机运营商信息

    获取手机运营商信息是通过获取imsi来判断的,它是有一个自己的标准和规则的,下面先介绍一下imsi: IMSI: 国际移动用户识别码(IMSI:International Mobile Subscri ...

最新文章

  1. 基于3D的结构光的应用
  2. KKT条件和拉格朗日乘子法
  3. “Survey of machine learning techniques for malware analysis ”
  4. mybatis整体架构
  5. 一年中所有节日的排列顺序_计数问题(二)-排列组合的使用
  6. 你的 GNN,可能 99% 的参数都是冗余的
  7. python中pygame输入换行文字,Pygame:写多行
  8. php模拟登录其他网站,PHP利用Curl模拟登录并获取数据例子
  9. Layui 表格table 第一次加载动态设置列
  10. privoxy基本配置-简洁版
  11. Restorator 导致win8或win8.1 打开程序提示不支持此接口的解决方法
  12. 考研数二高数基础笔记
  13. 蓝桥杯单片机学习之数码管
  14. ios 按钮下面加下划线_iOS 给部分文字加下划线四种方法
  15. linux限制用户登录失败次数
  16. 在 .NET 6 项目中使用 Startup.cs
  17. 亚马逊SP-API自发货标记发货对接
  18. 利用水文分析方法提取山脊、山谷线
  19. QMS-云质-质量管理-海克斯康为什么不断收购质量管理软件(QMS)?
  20. 祝贺!中国战队EDG夺冠

热门文章

  1. 从零点五开始用Unity做半个2D战棋小游戏(四)
  2. 腾讯天美六位TA:技术美术这份职业会长期存在吗?
  3. 模型解析之独立顶点的筛选
  4. python的5种高级用法
  5. Oracle里面的用户user无法登录 LOCKED(TIMED)
  6. 动态 SQL、EXECUTE IMMEDIATE、using、into、returning
  7. netca 遇到TNS-04612: XXX 的 RHS 为空
  8. Oracle 11g新特性:Automatic Diagnostic Repository
  9. 转载: 我如何使用 Django + Vue.js 快速构建项目
  10. ios Swift 中文学习手册