在 Android 设备中使用 ACTION_PICK 意图仅显示电话号码联系人

2024-04-09

我的目标是仅向用户显示带有电话号码的联系人,并让用户选择我想在本地存储的几个联系人。

我在下面的方法中使用了各种选项来代替 ContactsContract.Contacts.CONTENT_URI 。但我收到了很多显示的联系人(许多都是垃圾邮件,只有电子邮件 ID)。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.contact_selector);

        ((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View v) {
           // TODO Auto-generated method stub
           Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(contactIntent, 1);
              }
           });
    }

如果我将 ContactsContract.Contacts.CONTENT_URI 作为上述方法的参数传递,并且在以下处理程序方法的情况下,将查询方法的 String[] 作为投影参数(显示为注释),则该方法将失败并显示 java.lang.IllegalArgumentException。如果我在下面的方法中传递 null,那么无论我选择什么联系人,我都找不到与电话号码或电子邮件相关的任何列。

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(data != null)
        {
            Uri uri = data.getData();

            if(uri != null)
            {
                Cursor c = null;

                try
                {
                    c = getContentResolver().query(uri, null
                                                // new String[] { 
                            //ContactsContract.CommonDataKinds.Phone.NUMBER, 
                            //ContactsContract.CommonDataKinds.Phone.TYPE}, 
                            , null, null, null);

                    if(c != null && c.moveToFirst())
                    {
                        String number = c.getString(0);
                        String type = c.getString(1);
                    }               
                }
                finally
                {
                    if(c != null && !c.isClosed())
                        c.close();
                }
            }
        }
    }

当用户转到电话簿并且有可用的电话号码时,有什么方法可以仅显示用户通常可见的联系人?

我尝试浏览 stackoverflow 和其他网站中的所有线程,但找不到任何解决方案来解决此问题,尽管许多人已经发布了该问题。我没有太多使用 Android 平台的经验,我可能错过了某些小细节,我相信一定有一种简单的方法来实现这一点。

请建议。感谢你的帮助。

Thanks.


请使用下面的代码

Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
    intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
    startActivityForResult(intent, 1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 设备中使用 ACTION_PICK 意图仅显示电话号码联系人 的相关文章

随机推荐

  • viewDidLoad() 中的 tableView 数据源为空 - Swift

    下面是我的 ViewController 代码 GetRequest 中的 println 打印从 HTTP GET 请求接收到的正确数据 此时tableData有10个键值对 但是 如果我在 viewDidLoad 中调用 GetRequ
  • “集合已修改...”问题

    我有一个函数可以检查对象列表以查看它们是否已被单击并相应地触发 OnClick 事件 我相信该功能工作正常 但我遇到了问题 当我挂接到其中一个 OnClick 事件并删除该元素并将其插入到列表中的不同位置 该程序的典型功能 时 我收到 集合
  • 从 Hudson 获取 Eclipse PDT 每晚构建

    我一直在寻找 PDT 的最新夜间版本 但是官方下载网站 http www eclipse org epp download php仅截至 2010 年 9 月为止 经过一番搜索后 我被引导到他们CVS 仪表板 https hudson ec
  • 使用 Boost.Asio 时确保有效对象寿命的最佳方法是什么?

    最近经常使用 Boost Asio 我非常喜欢这个库 因为它提供了一种从当今的多核系统中榨取性能的绝佳方法 我曾多次问过自己这个问题 我认为在使用 Asio 进行异步调用时值得抛出关于对象生命周期 所有权的问题 我反复遇到的问题是 您经常必
  • 尝试以非 root 用户身份从容器内部写入已安装卷时出现问题

    我正在使用一个将运行 ZooKeeper 的容器 但我在安装到容器中的主机卷上遇到了权限问题 这是我的设置 在主机上 Ubuntu 14 04 创建了 zookeeper 系统用户 id 106 和组 id 111 创建目录 var log
  • 如何创建 NULL/空 DACL?

    我需要向每个人授予我正在创建的命名管道的访问权限 我理解的方法是创建一个 NULL 空 DACL 并将其传递给CreateNamedPipe 如何创建 NULL DACL 有人告诉我 这与传递 NULL 指针不同LPSECURITY ATT
  • 使用托管身份将 Function App 连接到 CosmosDB

    我正在尝试在函数应用程序中编写一个函数来操作 CosmosDB 中的数据 如果我将读写键放入环境变量中 我就能正常工作 为了使其更加强大 我希望它能够作为托管身份应用程序运行 该应用程序在 Cosmos DB 上具有 DocumentDB
  • 如何使用java删除文本文件中的特定字符串?

    我的输入文件有很多记录 作为示例 我们假设它有 这里的行号仅供参考 1 end 2 endline 3 endofstory 我期望我的输出为 1 2 endline 3 endofstory 但是当我使用这段代码时 import java
  • 将 Azure Functions 升级到 5.0:System.UriFormatException

    我一直致力于将我们的 Azure Functions 实现之一升级到 net 5 我已经与许多恶魔作斗争了 但正当我以为我已经整理了所有配置和依赖项注入更改时 它向我抛出了一个曲线球 后host RunAsync in Main 我得到以下
  • GWT CellTable 以编程方式选择 CheckBoxCell

    我有一个带有 CheckBoxCell 列的 cellTable 我想做的是在单元格表之外有一组按钮 让用户自动检查 取消检查一组不同的元素 例如检查所有 取消检查所有 但我想要更复杂的规则 我不明白的是如何访问该元素 我想通过行 列值 并
  • 为什么我没有从 Google OAuth 请求收到 RefreshToken?

    我正在尝试将 Google 日历集成到我的应用程序中 但在传递 RefreshToken 的 OAuth 授权方面遇到一些问题 我收到的 AccessToken 没有问题 但 RefreshToken 属性为 null 请参阅标记为 ERR
  • 用于处理 win32 FILETIME 的 Java 库?

    是否有任何 Java 库可以处理 win32文件时间 http msdn microsoft com en us library ms724284 28v vs 85 29 aspx时间间隔 它基本上是自 1601 年 1 月 1 日以来以
  • 3 个流体 Div 宽度 2 个固定边距?

    我有以下设置 但是将 div 的宽度设置为 30 左右并不能始终如一地工作 一旦窗口宽度小于某个数字 第三个 div 就会低于某个数字 有没有更好的方法来做到这一点 以便我的 div 始终保持内联并不断变得越来越小 同时它们之间的边距保持固
  • 用于 C++ 的 FastCGI

    我只找到了两个用于 C 的 FastCGI 库 有的是 官方 一 http www fastcgi com drupal node 6 q node 21 and 快速cgi https savannah nongnu org projec
  • 用户可编辑带有友好 ID 的 slugs

    Case 我的站点表单包含一个 slug 字段 如果输入了值 则应将其用作 slug 编辑 一些澄清 我想要的很像 slugs 在 WordPress 中的工作方式 如果未提供 slug gt slug 名称 如果提供了 slug gt 使
  • 如何有效检测逻辑和物理处理器的数量?

    目前我正在使用这个功能 它工作正常 但每个查询大约需要 1 秒 所以就我而言 我在应用程序中浪费了 3 秒钟 目前我正在考虑使用 3 个线程在一秒钟内获取所有信息 function GetWMIstring wmiHost wmiClass
  • Smalltalk:原语是如何实现的?

    我知道一切都是对象 您可以向 Smalltalk 中的对象发送消息来执行几乎所有操作 现在我们如何实现一个对象 内存表示和基本操作 来表示原始数据类型 例如如何 对于整数的实现 我查看了 Smalltalk 的源代码并发现了这个Smalli
  • Request.IsAuthenticated 始终为 true。我错过了什么?

    我正在尝试将用户名添加到 cookie 并在注销时清除它 但是Request IsAuthenticated返回始终为 true 因此我无法知道它是否是下一页上的成员 这是我正在尝试的 public void Logout FormsAut
  • 如何修复“向客户端发送响应时失败(22:无效参数)”

    使用 directio 时 如果有多个扇区大小不同的挂载点 Nginx 无法读取文件 我们的服务器在 Nginx 的根文件夹下安装了不同的硬盘 我们所有的旧磁盘的扇区大小都是 512 当我们更换磁盘时 Nginx 突然无法从该磁盘读取文件
  • 在 Android 设备中使用 ACTION_PICK 意图仅显示电话号码联系人

    我的目标是仅向用户显示带有电话号码的联系人 并让用户选择我想在本地存储的几个联系人 我在下面的方法中使用了各种选项来代替 ContactsContract Contacts CONTENT URI 但我收到了很多显示的联系人 许多都是垃圾邮