仅从 SIM 卡获取本地电话簿联系人 android

2023-12-15

我想知道是否可以仅获取 SIM 卡或电话簿中存在的联系人。现在我正在使用以下代码来获取联系人,它会获取所有联系人,甚至是我的 Gmail 和 Facebook 联系人。

Cursor cursor = getContentResolver().query(
                    ContactsContract.Contacts.CONTENT_URI, null, null, null, Phone.DISPLAY_NAME + " ASC");
            if (cursor.getCount() > 0)
            {
                while (cursor.moveToNext())
                {

                    PhoneBookUserEntity user = new PhoneBookUserEntity();
                    // Pick out the ID, and the Display name of the
                    // contact from the current row of the cursor
                    user.setId(cursor.getString(cursor.getColumnIndex(BaseColumns._ID)));
                    user.setPhoneBookName(cursor.getString(cursor.getColumnIndex(
                            ContactsContract.Contacts.DISPLAY_NAME)));
                    if(user.getphonebookname().length() > 4)
                    username = user.getphonebookname();//.substring(0,4);
                    else
                        username = user.getphonebookname();//.substring(0,1);
                    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
                    //    if (Boolean.parseBoolean(hasPhone)) { 
                    Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ user.getId(), null, null); 
                    while (phones.moveToNext()) { 
                        user.sePhoneNumber(phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER)));                 
                    } 
                    phones.close(); 
                    //}
                    // user.sePhoneNumber(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

                    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + user.getId(), null, null); 
                    while (emails.moveToNext()) { 
                        // This would allow you get several email addresses 
                        user.setEmailAddress(emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))); 
                    } 
                    emails.close(); 
                    user.setImageURI(getPhotoUri(user.getId()));
                    SearchContactsActivity.this.runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            _progressDialog.setMessage("Copying over your local phone book. Retrieving contact information for \n"+ username.toUpperCase());
                        }
                    });
                    arraylist.add(user);
                }

            }
            cursor.close();

仅对于 Sim 联系人,您可以使用以下代码

private void allSIMContact()
    {
        try
        {
            String ClsSimPhonename = null; 
            String ClsSimphoneNo = null;

            Uri simUri = Uri.parse("content://icc/adn"); 
            Cursor cursorSim = this.getContentResolver().query(simUri,null,null,null,null);

            Log.i("PhoneContact", "total: "+cursorSim.getCount());

            while (cursorSim.moveToNext()) 
            {      
                ClsSimPhonename =cursorSim.getString(cursorSim.getColumnIndex("name"));
                ClsSimphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number"));
                ClsSimphoneNo.replaceAll("\\D","");
                ClsSimphoneNo.replaceAll("&", "");
                ClsSimPhonename=ClsSimPhonename.replace("|","");

                Log.i("PhoneContact", "name: "+ClsSimPhonename+" phone: "+ClsSimphoneNo);
            }        
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

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

仅从 SIM 卡获取本地电话簿联系人 android 的相关文章

随机推荐

  • 为特定用户单独显示和隐藏谷歌表格

    我正在为我的团队成员制作一个谷歌电子表格 他们可以在其中保存他们的日志 所以我为他们每个人制作了一张单独的表格 但由于某些隐私原因 我不想让他们看到彼此的日志 我使用应用程序脚本隐藏工作表 并将它们与用户的电子邮件地址相关联 但是 当任何用
  • 将按钮插入 JFreeChart 图形中

    我使用代码来显示图表 我想在此图中插入一个按钮 显示详细信息 我将使用该按钮来显示有关该图的一些详细信息 它可以实现吗 谢谢 if jCheckBox3 isSelected try con getConnection jdbc mysql
  • 不使用keras后端库的自定义损失函数

    我正在将 ML 模型应用于实验设置以优化驱动信号 驱动信号本身是被优化的东西 但它的质量是间接评估的 它被应用于实验装置以产生不同的信号 我能够通过 python 中的函数运行实验并收集数据 我想设置一个带有自定义损失函数的 ML 模型 该
  • JS 如何在语句块中声明没有词法作用域的变量和函数?

    var a function a a 60 console log 1 a console log 2 a var b b 60 function b console log 3 b console log 4 b 输出是 1 60 2 f
  • Keycloak 提供者和用户存储

    我有一个正在运行的 java ee 应用程序 现在我想将 keycloak 集成为身份验证服务器 我唯一遇到的麻烦是用户存储 我想在我的java应用程序中拥有所有用户数据 现在的问题 如果用户在 keycloak 前端注册 我的 java
  • 如何从内存中删除多个 pandas (python) 数据帧以节省 RAM?

    我在预处理过程中创建了很多数据帧 由于我的 6GB RAM 有限 我想从 RAM 中删除所有不必要的数据帧 以避免在 scikit learn 中运行 GRIDSEARCHCV 时内存不足 1 是否有一个函数可以仅列出当前加载到内存中的所有
  • 在 MATLAB 中叠加两个图像

    我想在matlab中叠加两个相同尺寸的图像 我尝试使用imfuse功能 但我得到的图像与我想要的不一样 第一张图像是对原始图像应用 Canny 边缘检测器后获得的图像的负片 我想将这个带有黑边的负片图像强加到我的原始图像上 有人可以建议一些
  • 使用 selenium 和 python 等待表完全加载

    我想从表中的页面中抓取一些数据 所以我只关心表中的数据 早些时候我使用Mechanize 但我发现有时会丢失一些数据 特别是在表格底部 谷歌搜索 我发现这可能是由于 mechanize 不处理 Jquery Ajax 造成的 所以我今天改用
  • 找不到 swig.exe:尝试安装 pylinkgrammar 0.2.14 时出错

    当我尝试安装 pylinkgrammar 0 2 14 时出现错误 包括 pylinkgrammar setup py 错误的构建轮 命令 swig exe 失败 没有这样的文件或目录 构建 pylinkgrammar 失败 我该如何解决此
  • 如何使用属性文件配置 log4j

    如何让 log4j 获取属性文件 我正在编写一个 Java 桌面应用程序 我想使用 log4j 在我的主要方法中 如果有这个 PropertyConfigurator configure log4j properties 当我打开 Jar
  • 从页面/组件中的服务共享相同的 Observable

    我正在尝试订阅相同的内容Observable多次但不起作用 我有一个提供者可以为我提供Observable from AngularFirestore目的 这是我的提供者 Injectable export class MyProvider
  • 如何根据多行中的值对数据框的列进行排序?

    例如 df pd DataFrame x 1 1 1 2 3 3 y a a c b b b ct pd crosstab df x df y ct y a b c x 1 2 0 1 2 0 1 0 3 0 2 0 如何根据 row1 r
  • 功能制作

    嗨 我是函数式编程的新手 我所做的是 gt gt gt g lambda x x 2 gt gt gt f g gt gt gt g lambda x f f x gt gt gt g 9 36 现在 它还没有创建g作为一个不间断的递归函数
  • 如何在脚本中使用跳转主机/跳转服务器

    我需要编写一个脚本 以便能够在我们安全的场外实验室中的测试服务器上运行命令 问题是这些测试服务器位于跳转服务器 跳转主机后面 我手动输入 bash ssh A jumphost jumphost ssh server1 或者我编辑了我的个人
  • F# 中的 NullReferenceException

    当我单步执行以下代码时 report第二行为空 但是 第三行生成 NullReferenceException member this setTaggedResearchReportList index int taggedResearch
  • org.codehaus.jackson.map.JsonMappingException:无限递归(StackOverflowError)

    我正在尝试一些非常基本的网络服务 每次尝试返回 Prtnr 对象时都会出现此异常 Uncaught exception thrown in one of the service methods of the servlet spitter
  • 通过 JS 中的 XMLHttpRequest 对象发布表单数据? (跨浏览器)

    我试图在 js 中发布表单数据 我有这个代码 var formData new FormData formData append username Groucho formData append accountnum 123456 form
  • 使用Java将XSD转换为树结构

    我想生成 XML 模式的文档 我的目标是分析 xsd 文件并将其显示为树结构 解析所有复杂 匿名类型 此外 我需要用其基数 由模式定义 来注释该树中的所有项目 下面的小例子可能有助于澄清我的问题 a xsd 文件
  • Xamarin中的接口回调

    我正在尝试使用 C 从 Xamarin 内部的 java 库编写接口回调 下面是代码片段 Connector getInstance login email new ILoginCallback Override public void o
  • 仅从 SIM 卡获取本地电话簿联系人 android

    我想知道是否可以仅获取 SIM 卡或电话簿中存在的联系人 现在我正在使用以下代码来获取联系人 它会获取所有联系人 甚至是我的 Gmail 和 Facebook 联系人 Cursor cursor getContentResolver que