电话簿设置(即仅联系人过滤器)android 代码示例

Posted

技术标签:

【中文标题】电话簿设置(即仅联系人过滤器)android 代码示例【英文标题】:Phonebook settings (i.e contact only filter) android code example 【发布时间】:2013-02-26 13:34:18 【问题描述】:

我想要从我的应用程序中隐藏电话簿中没有电话号码的所有联系人。 就像电话簿一样,当您转到电话簿 - > 设置时,有一个复选框指出“仅与电话号码联系”我想在我的应用程序中实现此功能

我需要一种方法(代码)将用户导航到 电话簿 -> 设置(活动)(系统应用)

来自我的应用程序活动。

或更糟糕的情况是通过数据库隐藏所有没有电话号码的联系人。这样电话簿就可以过滤掉了。

目前我找到了

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 123);

以上代码打开电话簿,但我想打开电话簿 -> 设置页面。

总而言之,我想从我的应用程序中制作电话簿内容“带有电话号码的联系人”

【问题讨论】:

如果我理解了您的问题,这可能会对您有所帮助[android 联系人在单个数据库查询中显示姓名和电话号码?][1] [1]:***.com/questions/6587674/… 不,我想从我的活动中打开电话簿 -> 设置页面,如果不可能,则在我的应用程序中为电话簿实施“仅与电话号码联系”设置 【参考方案1】:

我需要一种方法(代码)将用户导航到电话簿 -> 设置(活动)(系统应用)

有数百甚至数千部 Android 手机。他们的“电话簿”应用程序不一定相同。这些“电话簿”应用程序都不一定具有您所寻求的功能——有些可能,有些则没有。而且,最有可能的是,没有一个记录和支持的 Intent 结构可以访问应用程序内的屏幕来控制他们可能拥有或不拥有的设置。

我想要从我的应用程序中隐藏电话簿中没有电话号码的所有联系人

那么您将不需要使用“电话簿”应用程序,而是通过READ_CONTACTS 权限和ContactsContract ContentProvider 自己显示联系人。

【讨论】:

您的意思是电话簿应用程序在所有设备中都不相同?每个 android 设备都有它的 no phoneBook(Nothing stander、activity name 等)。第二件事只用电话号码联系是通过电话簿过滤实现..我们不能用联系人数据库做这件事 @AmirQayyumKhan:“你的意思是电话簿应用程序在所有设备中都不相同?” -- 设备制造商可以并且确实将 Android 开源项目中的联系人应用程序替换为他们自己的。 “我们不能用联系人数据库做这件事”——为什么不呢?【参考方案2】:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);

【讨论】:

你刚刚复制了我自己的脚本!你解决了我的问题吗? 当然不是,阿米尔。我在谷歌上搜索,代码 sn-p 也不同。如果它不能解决您的问题,请尝试以不同的方式进行解释。 不,此代码不起作用..在您的代码中startActivityForResult(intent, PICK_CONTACT); PICK_CONTACT 是一个常量,例如 123 我只想通过我的应用程序在电话簿中隐藏所有没有电话号码的联系人。就像电话簿一样,当您进入设置时,有一个复选框,指出“仅与电话号码联系”我想在我的应用中实现这个功能【参考方案3】:

嗯,我已经成功开发了一个适用于 Android 的联系人应用程序作为我的主要项目。我相信这很简单。这是我的代码。

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                                           null,
                                           ContactsContract.Contacts.HAS_PHONE_NUMBER + " = 1", 
                                           null, 
                                           ContactsContract.Contacts.DISPLAY_NAME+" COLLATE LOCALIZED ASC");

            mAdapter = new MyAdapter(this,
                       R.layout.single_cell,
                       c, 
                       new String[]ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                       new int[]R.id.disp_name,
                       CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

            listview.setAdapter(mAdapter);

而且,在 MyAdapter 中,我扩展了 SimpleCursorAdapter 并覆盖了 bindView() 以利用 SimpleCursorAdapter 的效率。但是,您需要读取联系人的权限。在你的 android-manifest 文件中。请提及,

<uses-permission android:name="android.permission.READ_CONTACTS"/>

希望,它会有所帮助。

【讨论】:

以上是关于电话簿设置(即仅联系人过滤器)android 代码示例的主要内容,如果未能解决你的问题,请参考以下文章

从android中的电话簿中检索whatsapp联系人

android联系人提供者:如何设置电话号码主要

如何使用带有电话号码的 Firebase DB 过滤联系人列表

android 通用 Intent

如何从具有电子邮件或电话或两者的Android手机中选择联系人[关闭]

是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?