Android获取手机通讯录、sim卡联系人及调用拨号界面方法
作者:junjie 发布时间:2021-07-02 00:41:07
标签:Android,手机,通讯录,联系人,sim卡,拨号界面
android获取手机通讯录联系人信息
private void getPhoneContacts() {
ContentResolver resolver = this.getContentResolver();
// 获取手机联系人
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
Phone.NUMBER },
Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
+ Phone.TYPE_MOBILE + "'", new String[] { name }, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
String number = phoneCursor.getString(2);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String username = phoneCursor.getString(1);
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
获得手机sim卡联系人信息
sim卡和手机本人 获取的方式类似 只是url有点不一样 ,须要注意的一点是 sim卡 是没有联系人头像的。
private void getSIMContacts() {
ContentResolver resolver = mContext.getContentResolver();
// 获取Sims卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri,
new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
Phone.NUMBER },
Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
+ Phone.TYPE_MOBILE + "'", new String[] { name }, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
String number = phoneCursor.getString(2);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String username = phoneCursor.getString(1);
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
调用系统拨打电话的界面 ,代码如下。
tel:电话号码
//调用系统方法拨打电话
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mContactsNumber.get(position)));
startActivity(dialIntent);
最后,千万别忘记在AndroidManifest.xml文件中添加权限,否则运行程序是报错!
<!-- 读取联系人权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- 拨打电话权限 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>


猜你喜欢
- 一提到Android中页面的切换,你是不是只想到了startActivity启动另一个Activity?其实在Android中,可以直接利用
- 代码从windows下visual studio到andriod平台迁移实现步骤:前言前言也是迁言,从windows的visual stud
- 1.什么是接口隔离原则?客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口范围上。2.对应代码上面这张图呢,就违反
- 首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下<!DOCTYPE html PUBLIC "
- 一、java多线程基本入门java多线程编程还是比较重要的,在实际业务开发中经常要遇到这个问题。 java多线程,传统创建线程的方式有两种。
- 前言对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿
- 如何:对 Windows 窗体控件进行线程安全调用访问 Windows 窗体控件本质上不是线程安全的。 如果有两个或多个线程操作某一控件的状
- 1.前言初始化就是给变量一个初始值。 初始化的目的是为了让变量有值,防止使用时出现异常。在构造函数中,有一项重要功能就是对成员变量进行初始化
- 测试类中的问题和解决思路问题在测试类中,每个测试方法都有以下两行代码:ApplicationContext ac = new ClassPa
- java获取文件的inode标识符,如果文件被删除或者重命名,inode的值会发生变更,因此可以在第一次加载File之后记录inode,后续
- 引言 基于生成图片实现了一个手机号转图片的需求。 内容也很简单,直接
- 前言老师要求我们学生做一套拍照身份验证系统,经过长时间的学习,有了这篇文章,希望能帮到读者们。正文首先介绍本文的主角:AForge创建一个C
- 有的时候,我们需要对一堆数据进行统计分析后生成HTML或Excel格式报表。本来这并不是一件很难的事,但确是件比较麻烦的事情。最令人头痛的是
- Android 使用AsyncTask设置请求超时的注意事项final AsyncTaskTools task = new AsyncTas
- 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作一、登录校验流程1、S
- 一.SQLite的介绍1.SQLite简介SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 
- 微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧。微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难。下面小编给大
- 第一步:配置管理器中新建解决方案配置第二步:定义条件编译符号:第三步:在代码中使用自定义的条件编译#if CustomDebugConsol
- 这篇文章主要介绍了Java模拟多线程实现抢票,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考
- 一、导入和导出导入:通过解析excel表格中的数据,然后将数据放到一个集合中,接着通过对持久层操作,将数据插入到数据库中,再加载一下页面,从