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"/>

(0)

相关推荐

  • Android编程实现通讯录中联系人的读取,查询,添加功能示例

    本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能.分享给大家供大家参考,具体如下: 先加二个读和写权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 具体代码: package com.ebo

  • Android编程操作手机通讯录的方法示例

    本文实例讲述了Android编程操作手机通讯录的方法.分享给大家供大家参考,具体如下: 手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息.类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子.同样的这次也会使用到内容提供者的知识. 1. 要操作通信录就要得到授权,也就是读或者写通讯录的权力.这里也需要使用Junit <?xml version="1.0" encoding="utf-8"?> <manifest

  • Android手机联系人快速索引(手机通讯录)

    最近需要实现一个手机通讯录的快速索引功能.根据姓名首字母快速索引功能.下面是一个手机联系人快速索引的效果,总体来说代码不算难,拼音转换的地方略有复杂.下面上源码:源码中有注释. 下面是效果图: MainActivity: import java.util.ArrayList; import java.util.Collections; import java.util.List; import android.app.Activity; import android.os.Bundle; imp

  • Android实现通讯录效果——获取手机号码和姓名

    首先给大家展示下运行效果图: 由于通讯录在手机里是以数据库贮存的 所以我们可以通过一个方法 context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 来获得通讯录 ,这个方法返回一个游标的数据类型,通过moveToNext()方法来获取所有的手机号码信息 当然读取手机通讯录需要权限 在adnroidManifest文件中声明即可 由于我也实现了打电话的功能 所以也要声明权限 <uses-permi

  • 使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

  • Android自定义View实现通讯录字母索引(仿微信通讯录)

    一.效果:我们看到很多软件的通讯录在右侧都有一个字母索引功能,像微信,小米通讯录,QQ,还有美团选择地区等等.这里我截了一张美团选择城市的图片来看看: 我们今天就来实现图片中右侧模块的索引功能,包括触摸显示以选中的索引字母.这里我的UI界面主要是参照微信的界面来实现,所以各位也可以对照微信来看看效果,什么都不说了,只有效果图最具有说服力! 二.分析: 我们看到这样的效果我们心理都回去琢磨,他是如何实现的: 首先,它肯定是通过自定义 View 来实现的,因为 Android 没有提供类似这样的控件

  • Android跳转到通讯录获取用户名称和手机号码的实现思路

    效果图如下所示: 先给大家说下实现android 跳转到通讯录的实现思路: 1.点击跳转到通讯录界面 2.获取通讯录姓名和手机号码 3.回调显示姓名和手机号码 1首先是跳转到通讯录界面 Uri uri = Uri.parse("content://contacts/people"); Intent intent = new Intent(Intent.ACTION_PICK, uri); startActivityForResult(intent, 0); 通过设置通讯录url跳转,可

  • Android开发之自定义view实现通讯录列表A~Z字母提示效果【附demo源码下载】

    本文实例讲述了Android开发之自定义view实现通讯录列表A~Z字母提示效果.分享给大家供大家参考,具体如下: 开发工具:eclipse 运行环境:htc G9 android2.3.3 话不多说,先看效果图 其实左右边的A~Z是一个自定义的View,它直接覆盖在ListView上. MyLetterListView: public class MyLetterListView extends View { OnTouchingLetterChangedListener onTouching

  • Android保存联系人到通讯录的方法

    上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录.这里我就假设你已经拿到了要保存的联系人数据. 因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多其实看下如何读取的就会了. 直接上源码: /** * 添加联系人到本机 * * @param context * @param contact * @return */ public static boolean addContact(Context context,

  • Android通讯录开发之删除功能的实现方法

    无论是Android开发或者是其他移动平台的开发,ListView肯定是一个大咖,那么对ListView的操作肯定是不会少的,上一篇博客介绍了如何实现全选和反选的功能,本篇博客介绍删除功能,删除列表中的项无谓就是及时刷新列表,这又跟UI线程扯上关系了,还是那句话,数据的更新通知一定要在UI线程上做,不然会出现各种错误,比如出现adapter数据源改变,但没有及时收到通知的情况.在执行遍历删除的时候,最好不要每删一个就直接通知,下面是我的实现方法,将需要删除的contact保存到一个List然后通

  • Android实现仿通讯录侧边栏滑动SiderBar效果代码

    本文实例讲述了Android实现仿通讯录侧边栏滑动SiderBar效果代码.分享给大家供大家参考,具体如下: 之前看到某些应用的侧边栏做得不错,想想自己也弄一个出来,现在分享出来,当然里面还有不足的地方,请大家多多包涵. 先上图: 具体实现的代码如下: package com.freesonfish.listview_index; import android.content.Context; import android.graphics.Canvas; import android.grap

随机推荐