Android manifest中声明权限:

public class MainActivity extends AppCompatActivity {

ArrayAdapter adapter;

List contactsList=new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView contactsView=(ListView)findViewById(R.id.contacts_view);

adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,contactsList);

contactsView.setAdapter(adapter);

//判断是否授权

if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);

}else{

readContacts();

}

}

//使用readContacts方法来读取联系人

private void readContacts(){

Cursor cursor=null;

try{

cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);

if(cursor!=null) {

while (cursor.moveToNext()) {

//读取用户名和号码

String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

/*ContactsContract.CommonDataKinds.Phone类提供一个CONTENT_URI常量,即已经是parse()方法解析出来的结果,

不需重复调用*/

String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

contactsList.add(displayName + "\n" + number);

}

//刷新ListView

adapter.notifyDataSetChanged();

}

}catch (Exception e){

e.printStackTrace();

}finally {

if(cursor!=null){

cursor.close();

}

}

}

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

switch (requestCode){

case 1:

if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){

readContacts();

}else{

Toast.makeText(this,"你拒绝了权限的访问!!",Toast.LENGTH_SHORT).show();

}

break;

default:

}

}

}

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/contacts_view">

android 系统联系人,Android读取系统联系人相关推荐

  1. Android内容提供者(读取手机联系人信息)

    工程目录: Manifestes加入读取联系人权限 <uses-permission android:name="android.permission.READ_CONTACTS&qu ...

  2. Android 保存号码至已有联系人,新建联系人,读取手机联系人

    添加必要的权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> & ...

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

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

  4. Android 读取系统联系人

    Android 读取系统联系人 以下是一个小demo比较简单 XML代码: <?xml version="1.0" encoding="utf-8"?&g ...

  5. Android WiFi热点完全研究(自定义创建、跳转系统界面设置、读取配置、切换,Android6.0适配)...

    前言: WiFi热点设置页面的安全性选项在Android 4.x上有"无"."WPA PSK"."WPA2 PSK"三个选项,在Androi ...

  6. 运行时权限+读取系统联系人

    GitHub项目地址: https://github.com/Skymqq/ContactsTest.git 首先在模拟器中创建2个联系人,如下所示: 我们看到列表中中已经存在2位联系人了. 新建一个 ...

  7. Android C 语言读取系统属性

    用 Qt Creator 写一个 Android 程序,需要读取 DNS .C 语言怎么读呢,研究了一下,原来在 Android 的 C 库里,就有读取系统属性的方法.用 objdump 看了一下 l ...

  8. 以Android L读取系统所有logcat并写入文件为例分析Android 以添加系统进程的方式申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限

    添加selinux较好的文章,可以通过adb shell dmesg > kenel.log 获取kmesg 可以看到 avc:dined 相关内容 首先说说环境: 基于Android L的ao ...

  9. Android中读取系统图库(包含相册)中的图片,显示图片与图片的路径

    最近有一个需求,是类似于手机相机的功能,拍照,多次拍照(调用系统相机只能进行一次拍照),拍照页面显示一个拍照后的缩略图,点击缩略图后进行拍过的照片的筛选(有单选和多选的问题),以及后续操作(设计相关业 ...

最新文章

  1. java初学者必看——J2SE小结
  2. linux c 守护进程创建原理及简易方法
  3. python super 理解(一)
  4. 17-Translation (XLAT) Tables Library
  5. 转换到 COFF 期间失败: 文件无效或损坏
  6. Scala集合数据结构特点
  7. PetShop的系统架构设计
  8. mysql怎么设主键和外键_在MySQL中如何设置主键和外键
  9. XP系统安装python
  10. Linux截图gif,Ubuntu下截图与录制视频并作成gif图片
  11. KTV评分系统实现总结
  12. 越南edu学生校园校友邮箱申请UNIDAYS学生认证登录Apple music原创教程
  13. 百度地图清除指定覆盖物
  14. Linux入门,RTFM阅读那该死的手册
  15. C语言 输入一个字符,并判断这个字符属于哪一类字符
  16. 【FPGA——工具篇】:Xilinx_ISE_12.4安装包下载百度云网盘
  17. cookie的path和domain,expired
  18. android fota解决方案,FOTA解决方案让汽车系统快速升级
  19. 计算机网络实验子网划分与路由器配置,实验5子网划分路由配置
  20. webd和app端的区别

热门文章

  1. 八、Linux系统日志管理
  2. 汇编语言第三章检测题
  3. Eclipse自动生成作者、日期注释功能设置
  4. java并行计算Fork和Join的使用
  5. Python IO编程——文件读写
  6. nodejs的安装和使用
  7. .Net Attribute特性
  8. 完成蓝蜂浏览器的框架重构
  9. 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)...
  10. 《人月神话》读后感一