在 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?