在 Android 中,如何仅选择 PHONE 联系人?

Posted

技术标签:

【中文标题】在 Android 中,如何仅选择 PHONE 联系人?【英文标题】:In Android, how do you select only PHONE contacts? 【发布时间】:2011-09-28 22:38:19 【问题描述】:

我正在从 android 中的内置联系人提供程序 URI 中查询联系人。我只想获取 PHONE 联系人;有没有一致的方法来做到这一点?据我所知,电话联系人的帐户名称似乎因制造商而异(请参阅this question)。有没有办法以一致、可靠、与制造商和设备无关的方式获取 PHONE 联系人(不是 SIM、Facebook、Twitter 或其他)?

【问题讨论】:

您想获取所有有电话号码的联系人吗?还是您指的是从 SIM 卡导入的所有联系人? 我正在寻找存储在“电话”通讯录中的所有联系人,无论他们是否有电话号码、电子邮件或其他。我想我可以通过将我的查询与accounts 表连接起来并查找帐户名称vnd.sec.contact.phone 来做到这一点,但是在线阅读时,看起来该帐户名称是制造商(可能还有设备?)特定的。 【参考方案1】:
            Cursor cursor = null;

                try 

                    String selection = ContactsContract.Data._ID + " = ?";
                    String[] selectionArgs = new String[]  id ;
                    String[] projection = new String[]  ContactsContract.PhoneLookup.NUMBER;

                    cursor = getContentResolver().query(
                            ContactsContract.Contacts.CONTENT_URI,
                            projection, selection, selectionArgs, null);

                    if (cursor == null || !cursor.moveToFirst())
                        return;

                    String phone = cursor.getString(0);



                 finally 
                    if (cursor != null && !cursor.isClosed())
                        try 
                            cursor.close();
                         catch (Throwable ignore) 
                            // Ignored.
                        
                

在哪里“?”是用户ID,你可以把这段代码放到一个循环里。

【讨论】:

除非我误读了这段代码,否则这不是只能找到来自任何来源(电话、sim、facebook、twitter 等)的所有联系人,但只能找到有电话号码的人吗?我只想通过手机查找联系人,无论他们是否有电话号码。 你说得对,我误解了你的问题。我以为您正在尝试获取特定用户(ID)的电话号码。我会尽力为你找到答案。对此感到抱歉。

以上是关于在 Android 中,如何仅选择 PHONE 联系人?的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表框绑定 Windows Phone 7 中选择一个项目

如何仅使用客户 ID 在 Google Adwords API 中关联帐户?

如何解决此错误:android.permission.READ_PHONE_STATE?

如何仅从 Google Photos 应用程序中选择图像? Android 谷歌照片意图

MySQL选择其中列不为空

如何在android中显示本地推送通知(在主屏幕上的应用程序图标上,如i-phone)