Android应用开发揭秘-获取电话联系人及号码

Android应用开发揭秘-获取电话联系人及号码}//以下为官网API注解ContactsContract.CommonDataKinds.Phone.TYPE联系人电话的类型,对应如下:TYPE_MOBILE:手机号码TYPE_HOME:住宅电话TYPE_WORK:公司电话}//以下为官网API注解ContactsContract.CommonDataKinds.Phon

大家好,又见面了,我是你们的朋友全栈君。

原文链接:http://jingyan.baidu.com/article/6079ad0e6b1af428ff86db89.html

昨晚在看《Android应用开发揭秘》,在第3章的Content Provider模块演示实例Example_03_02在最新的ADT环境未能正确运行。在网上各大牛论坛与QQ群里交流,终于明白这是由于API 2.0中,每个联系人可以有多个电话(例如手机、住宅、公司、传真等),而原代码未能在这个环境中正确运行,会报错。在此分享给各位android学习的朋友们。

书中原有的示例代码如下:

文件名:Activity01.java

Example_03_02的原代码:

package com.yarin.android.Examples_03_02;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.widget.TextView;

public class Activity01 extends Activity{

    public void onCreate(Bundle savedInstanceState)

    {

        TextView tv = new TextView(this);

        String string = “”;               

super.onCreate(savedInstanceState);

            //得到ContentResolver对象

        ContentResolver cr = getContentResolver();

         //取得电话本中开始一项的光标       

Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

        //向下移动一下光标

        while(cursor.moveToNext())

        {

            //取得联系人名字

            int nameFieldColumnIndex =cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);

                 String contact = cursor.getString(nameFieldColumnIndex);//取得电话号码

            int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);//报错,返回值为-1.

              String number = cursor.getString(numberFieldColumnIndex);

            string += (contact+”:”+number+”
“);

        }

        cursor.close();

        //设置TextView显示的内容

        tv.setText(string);

        //显示到屏幕

        setContentView(tv);   

      }

}

参考android官方API资料及网上大牛们的经验,本代码修改如下:

package com.example.helloandroid;import android.app.Activity;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.database.Cursor;import android.widget.TextView;import android.content.ContentResolver;

public class Activity01 extends Activity{

    public void onCreate(Bundle savedInstanceState)

    {

        TextView tv = new TextView(this);

        String string = “”;

        super.onCreate(savedInstanceState);

        //得到ContentResolver对象

        ContentResolver cr = getContentResolver();

        //取得电话本中开始一项的光标

        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

        //向下移动光标

        while(cursor.moveToNext())

        {

            //取得联系人名字

            int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);

            String contact = cursor.getString(nameFieldColumnIndex);

           //取得电话号码

            String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));            Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + “=” + ContactId, null, null);

            while(phone.moveToNext())

            {

                String Number = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                string += (contact + “:” + Number + “
“);

            }

        }

        cursor.close();

        //设置TextView显示的内容

        tv.setText(string);

        //显示到屏幕

        setContentView(tv);

    }

}

//以下为官网API注解

ContactsContract.CommonDataKinds.Phone.TYPE

联系人电话的类型,对应如下:TYPE_MOBILE : 手机号码TYPE_HOME : 住宅电话TYPE_WORK : 公司电话

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 9千字长文带你了解SpringBoot启动过程–史上最详细 SpringBoot启动流程-图文并茂

    9千字长文带你了解SpringBoot启动过程–史上最详细 SpringBoot启动流程-图文并茂来自面试官发自内审深处的灵魂拷问:“说一下springboot的启动流程”;一脸懵逼的面试者:“它简化了spring的配置,主要是因为有自动装配的功能,并且可以直接启动,因为它内嵌了tomcat容器”;面试官:“嗯,没错,这是它的一些概念,你还没回答我的问题,它是怎么启动的,启懂时都经过了哪些东西?”;一脸懵逼的面试者:“额~~~不知道额····,我用的很熟练,但是不知道它里面做了哪些事情!”;面试官:“了解内部原理是为了帮助我们做扩展,同时也是验证了一个人的学习能力,如果你想让自己的职业道路.

    2025年11月2日
    4
  • 计算机专业的男生喜欢你,【男生这十个反应说明他喜欢你】_男人的10个表现说明他喜欢上了你…

    计算机专业的男生喜欢你,【男生这十个反应说明他喜欢你】_男人的10个表现说明他喜欢上了你…[onlylady乐活健康情感]男人是一种奇怪动物.和他看不上的女人说话时,他表现得十分自然大方,仿佛兄弟.和他看上的女人说话时,则表现得有点扭捏.1、和女人说话时,不太敢正面女人,而是常常温柔地瞟女人.男人是一种奇怪动物.和他看不上的女人说话时,他表现得十分自然大方,仿佛兄弟.和他看上的女人说话时,则表现得有点扭捏.并非缺乏正面女人的勇气,而是心底不由自主的害羞在作祟.对了,还有一种伴发症…

    2022年7月25日
    5
  • 五子棋的核心算法

    五子棋的核心算法

    2021年7月22日
    54
  • Dockerfile add_在docker中使用ubuntu

    Dockerfile add_在docker中使用ubuntu前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年8月6日
    4
  • python怎样读取文件夹里的图片_python图片处理及识别

    python怎样读取文件夹里的图片_python图片处理及识别Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式。首先需要准备一张照片,假如你有女朋友的话,可以用…

    2025年11月1日
    1
  • 安装linux的基本步骤_linux安装oracle

    安装linux的基本步骤_linux安装oracle文章目录一、下载Python包二、安装依赖环境三、安装Python3四、建立Python3和pip3的软链五、检查是否安装成功点我获取更多教程、面试经验、Python分享(PS:个人在用的人工智能学习网站推荐给需要的小伙伴:captainai)一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.org/mirrors/python/大部分版本和

    2022年10月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号