按电话号码搜索联系人
在我的应用程序中,用户写了一个电话号码,我想用该电话号码找到联系人姓名?按电话号码搜索联系人
我通常寻找这样的接触:
Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
但我这样做是为了访问所有联系人......在这个程序,我只希望得到给定电话号码的联系人姓名...如何我可以限制查询吗?
或者我必须去掉所有的联系人,看看是否有给定的电话号码?但我认为,这可能会很慢这样...
你应该看看推荐ContactsContract.PhoneLookup提供商
表示仰视的电话号码,例如呼叫者ID结果的表。要执行查找,您必须在CONTENT_FILTER_URI中追加想要查找的号码。这个查询是高度优化的。
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,...
谢谢。我试图调用getContentResolver()在我的广播接收器,但它看起来像那个函数不存在... – 2010-09-14 20:56:05
尝试前缀的上下文参数,因此它是context.getContentResolver() – Pentium10 2010-09-15 08:25:22
什么具体进入剩下的查询?这个答案不比现有的文档更有帮助。 – eternalmatt 2011-03-19 21:24:48
如果你想的完整代码:
public String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
String name = "?";
ContentResolver contentResolver = getContentResolver();
Cursor contactLookup = contentResolver.query(uri, new String[] {BaseColumns._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null);
try {
if (contactLookup != null && contactLookup.getCount() > 0) {
contactLookup.moveToNext();
name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
//String contactId = contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
谢谢!我不会初始化'name'变量,因为当没有记录时'null'是一个合适的返回值。 – 2014-04-15 17:33:01
特殊情况下,用户输入部分号码,但以不匹配的格式存储号码?例如,在以色列,国家的前缀是“+972”,对于某些手机号码,则添加“050”,但如果是全部号码,则变为“97250”(没有第一个“0”)。因此,如果用户键入“050”(搜索所有电话号码或至少以它开头),它将不会得到任何结果... – 2015-01-04 10:19:29
在我的情况下,我实现了一个函数来过滤一个原始数字并做出所有可能的组合,然后我逐一搜索。不幸的是,我认为Android没有办法简化它。我错了吗? – 2015-01-05 17:43:01
阅读有关所有这些空白可与:) – 2010-09-14 20:16:29
也将被替换的文件,要使用'CONTENT_FILTER_URI'。 – 2010-09-14 20:17:02
对于其他人的设施,我写了一篇文章,其中包含整个代码,用于查询姓名,照片,联系人ID等,并提供正确的解释。该代码包含在不同答案中发现的片段,但更多地组织和测试。希望能帮助到你。链接:http://hellafun.weebly.com/home/get-information-of-a-contact-from-number – Usman 2017-05-02 15:12:28