【问题标题】:Android - get contact where phone number LIKE something being typedAndroid - 在电话号码喜欢输入的地方获取联系人
【发布时间】:2016-01-28 23:13:50
【问题描述】:

我一直在尝试通过其号码获取联系人,这与您在股票拨号器上拨打号码时 Android 实施的方式相同。如果您熟悉,您就会知道,当您拨号时,它开始显示包含这些号码的匹配项(例如,在拨打 3412 时 913284912 会匹配)。 (不确定这种搜索方式是否仅在 5.x+ 上实现)

我得到了这个工作,但只有当号码与下面代码的联系人完全相等时:

private Cursor getContacts(String number) {
    // Run query
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number.trim()));
    String[] projection = new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME,
            ContactsContract.PhoneLookup.PHOTO_THUMBNAIL_URI, ContactsContract.PhoneLookup._ID};
    return getContext().getContentResolver().query(
            uri,
            projection,
            null,
            null,
            null
    );
}

我很难找到解决方案,因为每个人都使用它来获得联系。但因为我不想要完全匹配,所以这对我不起作用。

提前致谢。

【问题讨论】:

  • PhoneLookup 是要使用的正确 API,但当您输入“3412”时,913284912 将无法匹配。它需要匹配整个搜索文本。

标签: android android-contentprovider android-contacts


【解决方案1】:

您可以使用带有过滤器的适配器。可以找到一些示例:Filtering ListView with custom (object) adapter 甚至更好的Custom Listview Adapter with filter Android

【讨论】:

  • 您不能将此标记为重复?
  • 恕我直言,这不是重复的,因为在那些问题中他们知道他们想要一个 ListView 和一个过滤器,但在这个问题中他不知道要搜索什么。
猜你喜欢
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2011-07-30
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多