以下是我用ContentProvider得到手机联系人的两种方式,一种是在新建的module中使用ListView遍历,另一种是通过跳转到手机系统的通讯录
!
这是通过ListView遍历,图片只展示了联系人的姓名,实际上是可以获取联系人名字与号码

跳转到手机系统的通讯录

获取手机通讯录需要在清单文件中写权限

 <!--读取联系人的权限--><uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

首先写好activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"android:layout_width="match_parent" android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.g150825_resolver.MainActivity"><Button
        android:layout_width="match_parent"android:layout_height="wrap_content"android:text="获取所有的联系人"android:onClick="getContent"/><Button
        android:layout_width="match_parent"android:layout_height="wrap_content"android:text="获取本机联系人"android:onClick="getPhone"/><ListView
        android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/lv_main_list"></ListView>
</LinearLayout>

接下来是在MainActivity.java中实现具体的操作

package com.example.g150825_resolver;import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 获取联系人*/public class MainActivity extends AppCompatActivity {private ListView listView;private ContentResolver cr;private List<Map<String, Object>> data;private SimpleAdapter sa;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.lv_main_list);//获取内容访问者cr = getContentResolver();data =new ArrayList<Map<String,Object>>();sa = new SimpleAdapter(this, data,android.R.layout.simple_list_item_2,new String[]{"names","phones"},new int[]{android.R.id.text1,android.R.id.text2});listView.setAdapter(sa);}public void getContent(View view){Cursor cursor= cr.query(Uri.parse("content://com.android.contacts/raw_contacts"),null,null,null,null);while(cursor.moveToNext()){Map<String, Object> map=new HashMap<String, Object>();int id=  cursor.getColumnIndex("_id");String displayName=cursor.getString(cursor.getColumnIndex("display_name"));Log.i("test",id+displayName);map.put("names",displayName);//根据联系人获取联系人数据Cursor cursor2=cr.query(Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data"),null,null,null,null);while(cursor2.moveToNext()){//  int type=cursor2.getInt(cursor2.getColumnIndex("mimetype_id"));String type=cursor2.getString(cursor2.getColumnIndex("mimetype"));String data1=null;if ("vnd.android.cursor.item/phone_v2".equals(type)){data1 = cursor2.getString(cursor2.getColumnIndex("data1"));Log.i("test","   "+type+" "+data1);map.put("phones",data1);}}data.add(map);//通知适配器发生改变sa.notifyDataSetChanged();}}public void getPhone(View view){Uri uri = Uri.parse("content://contacts/people");Intent intent = new Intent(Intent.ACTION_PICK, uri);startActivityForResult(intent, 0);}}

做这个功能需要获取手机中表的路劲Uri
<1>content://com.android.contacts/raw_contacts(获得联系人的id,姓名)
<2>content://com.android.contacts/raw_contacts/”+id+”/data(根据联系人的id获得联系人的信息)

有意者可以多多交流哦!!!

通过ContentProvider实现获取手机联系人相关推荐

  1. android 获取phone实例,Android ContentProvider获取手机联系人实例

    在做项目的时候,因为要用到我们自动获取联系人的姓名和电话,就想到了ContentProvider分享数据的功能,这样做既节省了时间,也减少了我们输入错误号码的几率,所以,想在这里把小demo分享给大家 ...

  2. android的contentResolver,contentProvider简介(附带个获取手机联系人及头像实例)

    介绍 android中有个ContentProvider(内容提供者)还有个ContentResolver(内容解析者) 简单来说,contentProvider就是将自己app的数据库共享,使得其他 ...

  3. 获取ContentProvider来获取手机所有的联系人及联系人信息

    用ContentProvider内容提供者的技术来获取手机上的联系人,比如开发软件时,如果您的好友也是软件用户,则可以通过手机联系人直接添加好友 下面是实现步骤 这里就模仿一下获得 首先在你的界面打一 ...

  4. 获取手机联系人的两种方法

    获取手机联系人的两种方法 第一种方法比较简单 就几句话 但是获取的信息不完善 第二种方法比较难 代码比较多 获取的信息全 须要加的权限 : <uses-permission android:na ...

  5. android 使用内容提供者获取手机联系人

    最近在学习安卓的相关内容, 正好在写获取手机联系人的程序, 就想到了内容提供者, 这里有几点需要注意, 写到这里, 以后方便自己查询. 1. 手机联系人的数据库是存储在 data/data/com.a ...

  6. 获取手机联系人,并通过拼音字母快速查询

    获取手机联系人,并通过拼音字母快速查询. 通过工具类转换联系人首字的首字母,并排序显示. 通过画布的方式在布局右侧添加快速查询的字母布局 显示效果如下图: 右侧点击[★]时回到顶部: 滑动到[N]时N ...

  7. java 获取手机联系人_Android 读取手机联系人、拨号、发送短信及长按菜单的操作...

    本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...

  8. Android获取手机联系人匹配用户表并按字母A Z排序展示

    1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...

  9. 获取手机联系人信息(姓名 电话号码)

    手机的联系人信息,存放的位置分为两种.一种存放在手机内存里面,一种是存放在sim卡里面. 他们的访问方式都相似,都是把电话号码和联系人姓名是分开存放在数据库中的,只是访问的uri不同. 本文主要讲的是 ...

最新文章

  1. 赔腾讯70万,QQ“自动抢红包”软件被判不正当竞争
  2. 设计模式(创建型模式)——单例模式(Singleton)
  3. 2021人工智能年度评选结果揭晓!AI落地最佳参考在此奉上
  4. ST17H26之aes模块测试程序
  5. java 内存空间_怎样用java实现存储空间动态分配
  6. 都是程序员,凭什么他工资比我高,下班比我早?
  7. python 角点检测_opencv python Shi-Tomasi角点检测
  8. ZigBee开发(15)--组网实验点播
  9. STM32工作笔记0034---蜂鸣器实验-M3
  10. cocostudio
  11. SAP结转方法:表结法、帐结法
  12. MaskRCNN源码解析4-0:ROI Pooling 与 ROI Align理论
  13. ESP32文件系统esp_littlefs实例
  14. 计算机硬件系统的主要性能指标
  15. java格式化xml字符串_XML串的格式化输出
  16. 使用metalink批量下载sentinel数据
  17. 马云给正在奋斗的人的经典语句
  18. 一文梳理 | 电力企业网络安全管理及等级保护工作重点
  19. 2022/07/17 软件设计师错题日志 Day 1
  20. Ubuntu18.04鼠标闪烁、无线网卡不识别问题

热门文章

  1. ncl批量处理多个nc文件_UG定制后处理入门必备基础
  2. 用 Microsoft.mshtml.dll 和 WebClient 自己实现网页保存为 MHT 文件
  3. 全国285个地级市平均房价数据(2000-2021年)
  4. 加快云网融合发展,打通算力传输大动脉
  5. 【FFmpeg在Intel GPU上的硬件编解码实现】
  6. Java版本8u201与8u202的区别
  7. EasyUI Treegrid 树形网格(官网没有提到的实现方式)
  8. Base64与16进制转换
  9. optimal stopping 最优停止理论计算最适结婚年龄
  10. Mac下查看已安装的jdk版本及其安装目录