android 系统联系人,Android读取系统联系人
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读取系统联系人相关推荐
- Android内容提供者(读取手机联系人信息)
工程目录: Manifestes加入读取联系人权限 <uses-permission android:name="android.permission.READ_CONTACTS&qu ...
- Android 保存号码至已有联系人,新建联系人,读取手机联系人
添加必要的权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> & ...
- java 获取手机联系人_Android 读取手机联系人、拨号、发送短信及长按菜单的操作...
本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...
- Android 读取系统联系人
Android 读取系统联系人 以下是一个小demo比较简单 XML代码: <?xml version="1.0" encoding="utf-8"?&g ...
- Android WiFi热点完全研究(自定义创建、跳转系统界面设置、读取配置、切换,Android6.0适配)...
前言: WiFi热点设置页面的安全性选项在Android 4.x上有"无"."WPA PSK"."WPA2 PSK"三个选项,在Androi ...
- 运行时权限+读取系统联系人
GitHub项目地址: https://github.com/Skymqq/ContactsTest.git 首先在模拟器中创建2个联系人,如下所示: 我们看到列表中中已经存在2位联系人了. 新建一个 ...
- Android C 语言读取系统属性
用 Qt Creator 写一个 Android 程序,需要读取 DNS .C 语言怎么读呢,研究了一下,原来在 Android 的 C 库里,就有读取系统属性的方法.用 objdump 看了一下 l ...
- 以Android L读取系统所有logcat并写入文件为例分析Android 以添加系统进程的方式申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限
添加selinux较好的文章,可以通过adb shell dmesg > kenel.log 获取kmesg 可以看到 avc:dined 相关内容 首先说说环境: 基于Android L的ao ...
- Android中读取系统图库(包含相册)中的图片,显示图片与图片的路径
最近有一个需求,是类似于手机相机的功能,拍照,多次拍照(调用系统相机只能进行一次拍照),拍照页面显示一个拍照后的缩略图,点击缩略图后进行拍过的照片的筛选(有单选和多选的问题),以及后续操作(设计相关业 ...
最新文章
- java初学者必看——J2SE小结
- linux c 守护进程创建原理及简易方法
- python super 理解(一)
- 17-Translation (XLAT) Tables Library
- 转换到 COFF 期间失败: 文件无效或损坏
- Scala集合数据结构特点
- PetShop的系统架构设计
- mysql怎么设主键和外键_在MySQL中如何设置主键和外键
- XP系统安装python
- Linux截图gif,Ubuntu下截图与录制视频并作成gif图片
- KTV评分系统实现总结
- 越南edu学生校园校友邮箱申请UNIDAYS学生认证登录Apple music原创教程
- 百度地图清除指定覆盖物
- Linux入门,RTFM阅读那该死的手册
- C语言 输入一个字符,并判断这个字符属于哪一类字符
- 【FPGA——工具篇】:Xilinx_ISE_12.4安装包下载百度云网盘
- cookie的path和domain,expired
- android fota解决方案,FOTA解决方案让汽车系统快速升级
- 计算机网络实验子网划分与路由器配置,实验5子网划分路由配置
- webd和app端的区别