Android 中如何获取联系人信息

2024-03-10

我正在开发一个在android平台上编写短信的应用程序。为此,我需要获取“联系人”、“最近联系人”和“组”。请告诉我任何教程或如何执行此操作的代码。当我们单击这三个按钮中的任何一个时,应该会出现联系人以及用于选择多个联系人的复选框。 谢谢。


这是以编程方式获取联系人的代码

    ContentResolver cr = getContentResolver();
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
    null, null, null);
  String id = null, name = null, email = null, phone = null, note = null, orgName =     null, title = null;
  String Phone1 = "unknown", Phone2 = "unknown", Phone3 = "unknown", type1 = "unknown",        type2 = "unknown", type3 = "unknown";
  int size = cur.getCount();
if (cur.getCount() > 0) {
    int cnt = 1;
    while (cur.moveToNext())
    {
        email = "";
        name = "";
        cnt++;
        id = cur.getString(cur
                .getColumnIndex(ContactsContract.Contacts._ID));
        name = cur
                .getString(cur
                        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

        if (name != null && name != "") {
            if (!checkEmail(name)) {
                email = "";

            } else {
                email = name;
                name = "";
            }
        }
        if (Integer
                .parseInt(cur.getString(cur
                        .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)

        {
            System.out.println("name : " + name);
            Cursor pCur = cr
                    .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id },
                            null);

            Phone1 = " ";
            Phone2 = " ";
            Phone3 = " ";
            while (pCur.moveToNext())
            {
                String phonetype = pCur
                        .getString(pCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                String MainNumber = pCur
                        .getString(pCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                if (phonetype.equalsIgnoreCase("1")) {
                    Phone1 = MainNumber;
                    type1 = "home";
                } else if (phonetype.equalsIgnoreCase("2")) {
                    Phone2 = MainNumber;
                    type2 = "mobile";
                } else {
                    Phone3 = MainNumber;
                    type3 = "work";
                }
            }
            pCur.close();

        }
            Cursor addrCur = cr
                    .query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID
                                    + " = ?", new String[] { id },
                            null);
            if (addrCur.getCount() == 0) {
                addbuffer.append("unknown");
            } else {
                int cntr = 0;
                while (addrCur.moveToNext()) {

                    cntr++;
                    String poBox = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                    if (poBox == null) {
                        poBox = " ";
                    }
                    String street = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                    if (street == null) {
                        street = " ";
                    }
                    String neb = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.NEIGHBORHOOD));
                    if (neb == null) {
                        neb = " ";
                    }
                    String city = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
                    if (city == null) {
                        city = " ";
                    }
                    String state = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
                    if (state == null) {
                        state = " ";
                    }
                    String postalCode = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
                    if (postalCode == null) {
                        postalCode = " ";
                    }
                    String country = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
                    if (country == null) {
                        country = " ";
                    }

                    String type = addrCur
                            .getString(addrCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
                    if (type == null) {
                        type = " ";
                    }
                }

            }

            addrCur.close();

            String noteWhere = ContactsContract.Data.CONTACT_ID
                    + " = ? AND " + ContactsContract.Data.MIMETYPE
                    + " = ?";
            String[] noteWhereParams = new String[] {
                    id,
                    ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE };
            Cursor noteCur = cr.query(
                    ContactsContract.Data.CONTENT_URI, null,
                    noteWhere, noteWhereParams, null);

            note = " ";

            if (noteCur.moveToFirst()) {
                note = noteCur
                        .getString(noteCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));

                if (note == null) {
                    note = " ";
                }
            }
            noteCur.close();
            String orgWhere = ContactsContract.Data.CONTACT_ID
                    + " = ? AND " + ContactsContract.Data.MIMETYPE
                    + " = ?";
            String[] orgWhereParams = new String[] {
                    id,
                    ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE };
            Cursor orgCur = cr.query(
                    ContactsContract.Data.CONTENT_URI, null,
                    orgWhere, orgWhereParams, null);
            orgName = " ";
            if (orgCur.moveToFirst()) {
                orgName = orgCur
                        .getString(orgCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Organization.COMPANY));

            }
            if (orgName == null) {
                orgName = " ";
            }
            orgCur.close();

            Cursor emailCur = cr
                    .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = ?", new String[] { id },
                            null);
            email = "unknown";
            while (emailCur.moveToNext()) {

                email = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                String emailType = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                if (email == null) {
                    email = "unknown";
                }
                if (emailType.equalsIgnoreCase("1")) {
                } else {
                }
            }

            // add
            emailCur.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中如何获取联系人信息 的相关文章

  • 模拟器中 Google Wear 上的语音识别器没有语音输入

    我试图使用 Google Wear 网站上的自由形式语音输入 在 hello world 示例中 我刚刚添加了对 textView 的单击 它确实从语音意图中调出 立即发言 活动 但模拟器无法检测到我的麦克风发出的任何声音 我使用的是 Ma
  • Android EditText 和 addTextChangedListener

    我目前正在将数据库管理器移植到 Android 由于性能原因 我喜欢 仅更新已修改的属性 我尝试使用 addTextChangedListener 执行此操作 以便将修改后的条目添加到列表中 但我的程序从未输入其任何方法 EditText
  • 通过代码在创建时突出显示 ListView 项目

    我想在创建 listView 时突出显示 ListView 的第一行 0 我尝试了不同的方法 就像您在注释代码中看到的那样 但没有任何效果 这很奇怪 因为 OnItemClickListener 中的突出显示工作正常 它通过 xml 选择器
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • 当我单击“完成”键时,Android OnEditorActionListener() actionId 给出 0

    我创建了一个键盘 当用户输入数字时 它会输入特定的 EditText 但是当用户单击Done关键 它没有去setOnEditorActionListener但它关闭了键盘 这是我的代码 final EditText txtQty new E
  • 蓝牙 BLE Android 以最大吞吐量写入外设

    我们公司开发了一个具有蓝牙 BLE 的硬件单元 并且我们在 Nexus 7 2013 中有一个服务应用程序 我们希望使用它向该单元发送固件文件 文件最大可达 500kb BT芯片是德州仪器CC2540 我浏览了大量的页面 并扫描了 Stac
  • relativelayout导致动画不起作用?

    我有一个活动 其布局仅包含一个 VideoView 这是 XML
  • CoordinatorLayout 和 ImageView 在滚动时调整宽度的问题

    我正在尝试放置一个ImageView in a CollapsingToolbarLayout它在加载时占据整个屏幕 并且当您滚动内容时 16x9 分辨率图像宽度会调整大小 直到图像占据屏幕的整个宽度 那时 我希望图像具有视差app lay
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • 什么是 Android 测试协调器?

    谷歌最近发布了Android测试支持库1 0 读完后overview https android developers googleblog com 2017 07 android testing support library 10 is
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • FragmentActivity 无法解析为类型

    我正在尝试来自的应用程序这个博客 http android developers blogspot com 2011 02 android 30 fragments api html 在延长的同时FragmentActivity 我收到以下
  • Jetpack Compose:制作全屏(绝对定位)组件

    我怎样才能在全屏渲染树的深处制作一个可组合的 类似于Dialog可组合作品 例如 当用户单击图像时 它会显示该图像的全屏预览 而无需更改当前路线 我可以用 CSS 来做到这一点position absolute or position fi
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆
  • 以 HTML 格式发送电子邮件

    我想发送 HTML 格式的电子邮件 如下图所示 我怎样才能做到这一点 请帮我 提前致谢 String body new String table tr td br header td tr br br Get b Best Score b
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据
  • 我想测量 ListView 的高度 (getHight() = 0)

    我无法自己决定任务将是问 我想测量 ListView 的高度 无法捕捉渲染 ListView 的时刻 rssListView getHight 0 public class RSSactivity extends Activity publ

随机推荐

  • 为什么 GridView 内的 LinkBut​​ton 不会引发其 OnClick 事件?

    我在 GridView 中有一个 LinkBut ton 通过 TemplateField 无论我如何尝试 LinkBut ton 都不会调用其事件处理程序 我都尝试过 传统的事件处理程序 OnClick GridView 级别的 OnRo
  • 根据中心性对顶点着色

    我正在尝试更改 igraph 生成的图形中顶点的颜色 更具体地说 我有一个从邻接矩阵创建的 95 个节点图 我想根据它们的度数 介数 特征值中心性 接近度对它们进行着色 但我猜在我知道如何用它来做之后 我可以和其他人一起做 所以到目前为止我
  • ChartJS 不使用 Moment.js 显示时间数据

    我正在尝试按小时绘制给定日期的一系列数据点 并非每个小时都包含在数据集中 但我仍然想显示从 0 00 23 00 的时间并绘制可用的数据点 我的错误是 该方法未实现 要么找不到适配器 要么找不到适配器 提供了不完整的集成 然而 纵观文档 h
  • 在 Perl 中将 UTF8 字符串转换为 ASCII

    我已经尝试了 Google 和 StackOverflow 推荐的 我能找到的 所有内容 包括使用 Encode 我的代码可以工作 但它只使用 UTF8 并且我收到宽字符警告 我知道如何解决这些警告 但我没有将 UTF8 用于其他任何用途
  • 隐藏除前 4 个元素之外的所有元素

    有无穷无尽的元素 我想要做的是隐藏除前 4 个元素之外的所有元素 带有 not 选择器 我想让点击全部可见 这可以用CSS实现吗 ul li li li li li li li li li li must hide li li must h
  • 使用 Base64 图像的 HTML 到 PDF 会抛出 FileNotFoundException

    我正在使用 itextpdf 5 0 6 jar Java 8 当我尝试使用 base64 图像标签导出 html 代码时 出现文件未找到异常 如果我删除图像标签 一切都会很好 我发现了一些关于覆盖图像标签处理器的解决方案 但大多数都是旧的
  • 关闭 Selenium IDE 中新打开的选项卡或窗口

    在 Windows7 和 Firefox 中使用 Selenium IDE 自动单击链接可能会生成新选项卡或新窗口 close 关闭原始窗口或选项卡 而不是新窗口或选项卡 也许如果我有新创建的 ID 我可以选择它然后关闭它 但我不知道如何自
  • 对两个对象数组的数据求和

    我有两个对象数组 我想对具有相同键 在本例中为 id 的对象求和 如果没有匹配键 则只需创建一个新的 如果我是 我很抱歉没有解释清楚 我对 JavaScript Array Object 很陌生 var dataOne id 1 total
  • 将另一个声音添加到 .NET Speech 中

    如何将其他声音添加到 NET Speech 中 我想使用捷克语语音 我找到了一些 sis files Eliska22k sis但我不知道如何使用它 SpeechSynthesizer synth new SpeechSynthesizer
  • Common Lisp 案例和引用元素

    我正在用 CL 编写一个地下城爬行游戏 但在处理案例表单时遇到了问题 两件事情 Common Lisp 抱怨Duplicate keyform QUOTE in CASE statement make instance cl rogue t
  • 如何在 python-flask 中添加自定义字体?

    我尝试过使用 fontface css 样式 但字体没有渲染 还有另一种方法可以使用 python flask 来做到这一点吗 p style font family trial font weight bold Hello p 上面是我的
  • 使 Div 向上滚动时返回到其原始位置

    当您向下和向上滚动时 我有一个带动画的 div 问题是 当我非常快地向上和向下滚动而不让 div 完成其动画时 div 会逐渐从上部屏幕中消失 如果我删除 animate 函数中的 stop 并快速上下滚动 div 会继续执行此操作一段时间
  • 如何在Android Studio上实时查看Sqlite数据库中插入的数据

    你能帮我解决这个问题吗 我正在将值插入到我的 Sqlite 数据库中 如何检查或查看插入的数据 有没有任何工具或其他技术来显示数据 如果您想显示数据Log尝试下面的代码 for Contact cn contacts String log
  • .NET Standard 2.0 无法在 .NET Framework 2.0 中引用

    我收到一个错误 c xxxx csproj 目标为 NETStandard Version v2 0 它无法被面向 NETFramework Version v2 0 的项目引用 WindowsFormsApp1 如何解决 遗憾的是 您无法
  • 用核心运动计算倾斜角

    我的申请有一个记录会话 当用户开始记录会话时 我开始从设备的 CMMotionManager 对象收集数据并将它们存储在 CoreData 上以供稍后处理和呈现 我正在收集的数据包括 GPS 数据 加速度计数据和陀螺仪数据 数据的频率为10
  • 将 webkit 滚动条样式应用于指定元素

    我对以双冒号为前缀的伪元素很陌生 我看到一篇博客文章讨论使用一些仅适用于 webkit 的 css 来设置滚动条的样式 伪元素 CSS 可以应用于单个元素吗 This works by applying style to all scrol
  • 在节点主管中,如何监视目录中的所有内容是否发生更改?

    https github com isaacs node supervisor https github com isaacs node supervisor 我想查看 api 目录及其所有子目录内的所有内容 递归地 我怎样才能做到这一点
  • CouchDB 入门

    我已经在我的 Linux 云服务器上安装了 CouchDB 并且我正在尝试访问 Futon 欢迎屏幕 O Reilly 书中说要转到 127 0 0 1 portnum 但我不在本地主机上工作 它是我的远程服务器 所以我应该能够使用 xxx
  • 使用指定的初始化器初始化数组时出现奇怪的值

    当我初始化下面的数组时 所有输出看起来都正常 除了values 3 因为某些原因values 3 初始化为values 0 values 5 正在输出一个非常大的数字 我的猜测是我正在尝试分配values 0 values 5 在它们被正确
  • Android 中如何获取联系人信息

    我正在开发一个在android平台上编写短信的应用程序 为此 我需要获取 联系人 最近联系人 和 组 请告诉我任何教程或如何执行此操作的代码 当我们单击这三个按钮中的任何一个时 应该会出现联系人以及用于选择多个联系人的复选框 谢谢 这是以编