通过ContentProvider实现获取手机联系人
以下是我用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实现获取手机联系人相关推荐
- android 获取phone实例,Android ContentProvider获取手机联系人实例
在做项目的时候,因为要用到我们自动获取联系人的姓名和电话,就想到了ContentProvider分享数据的功能,这样做既节省了时间,也减少了我们输入错误号码的几率,所以,想在这里把小demo分享给大家 ...
- android的contentResolver,contentProvider简介(附带个获取手机联系人及头像实例)
介绍 android中有个ContentProvider(内容提供者)还有个ContentResolver(内容解析者) 简单来说,contentProvider就是将自己app的数据库共享,使得其他 ...
- 获取ContentProvider来获取手机所有的联系人及联系人信息
用ContentProvider内容提供者的技术来获取手机上的联系人,比如开发软件时,如果您的好友也是软件用户,则可以通过手机联系人直接添加好友 下面是实现步骤 这里就模仿一下获得 首先在你的界面打一 ...
- 获取手机联系人的两种方法
获取手机联系人的两种方法 第一种方法比较简单 就几句话 但是获取的信息不完善 第二种方法比较难 代码比较多 获取的信息全 须要加的权限 : <uses-permission android:na ...
- android 使用内容提供者获取手机联系人
最近在学习安卓的相关内容, 正好在写获取手机联系人的程序, 就想到了内容提供者, 这里有几点需要注意, 写到这里, 以后方便自己查询. 1. 手机联系人的数据库是存储在 data/data/com.a ...
- 获取手机联系人,并通过拼音字母快速查询
获取手机联系人,并通过拼音字母快速查询. 通过工具类转换联系人首字的首字母,并排序显示. 通过画布的方式在布局右侧添加快速查询的字母布局 显示效果如下图: 右侧点击[★]时回到顶部: 滑动到[N]时N ...
- java 获取手机联系人_Android 读取手机联系人、拨号、发送短信及长按菜单的操作...
本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...
- Android获取手机联系人匹配用户表并按字母A Z排序展示
1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...
- 获取手机联系人信息(姓名 电话号码)
手机的联系人信息,存放的位置分为两种.一种存放在手机内存里面,一种是存放在sim卡里面. 他们的访问方式都相似,都是把电话号码和联系人姓名是分开存放在数据库中的,只是访问的uri不同. 本文主要讲的是 ...
最新文章
- 赔腾讯70万,QQ“自动抢红包”软件被判不正当竞争
- 设计模式(创建型模式)——单例模式(Singleton)
- 2021人工智能年度评选结果揭晓!AI落地最佳参考在此奉上
- ST17H26之aes模块测试程序
- java 内存空间_怎样用java实现存储空间动态分配
- 都是程序员,凭什么他工资比我高,下班比我早?
- python 角点检测_opencv python Shi-Tomasi角点检测
- ZigBee开发(15)--组网实验点播
- STM32工作笔记0034---蜂鸣器实验-M3
- cocostudio
- SAP结转方法:表结法、帐结法
- MaskRCNN源码解析4-0:ROI Pooling 与 ROI Align理论
- ESP32文件系统esp_littlefs实例
- 计算机硬件系统的主要性能指标
- java格式化xml字符串_XML串的格式化输出
- 使用metalink批量下载sentinel数据
- 马云给正在奋斗的人的经典语句
- 一文梳理 | 电力企业网络安全管理及等级保护工作重点
- 2022/07/17 软件设计师错题日志 Day 1
- Ubuntu18.04鼠标闪烁、无线网卡不识别问题