首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nativescript-联系人-如何按数字搜索联系人,如getContactsByNumber(号码)

nativescript-联系人-如何按数字搜索联系人,如getContactsByNumber(号码)
EN

Stack Overflow用户
提问于 2018-11-12 12:22:38
回答 1查看 439关注 0票数 1

使用本地文本-联系人插件使用本地文本5.0 +角+ webpack

有没有办法根据电话号码来获得联系人的名字?

核心问题是-我想显示最新的电话列表。它很好,但有一个问题。

让我用一个例子来解释: 1.上午9点收到来自未知号码的电话,这显示联系人名为“未知”,电话号码在列表中

  1. 在上午9点10分打完电话后,电话号码就会添加到联系人中。
  2. 在10点,从相同的号码接到电话。
  3. 现在在我的Android中,当我看到调用日志列表时,我看到了两个类似于这个->的调用

上午10:00吉姆·科贝特999988887777上午9:00未知999988887777

相反,我想显示不同的电话日志与联系人名称,如果它被保存。===或我将查询nativescript-联系人以获得使用该号码的联系人名称。(此特性在此插件中不可用)

我试着用Set()没有运气。我无法理解如何在查询的同时实现组,我对此的理解有限。

为了澄清,在程序中没有错误。

下面是使用的调用日志相关代码:

代码语言:javascript
复制
var utilsModule = require("tns-core-modules/utils/utils");
public  CallLog= android.provider.CallLog;
public  Log = android.util.Log;
public  Uri = android.net.Uri;
var callUri = this.Uri.parse("content://call_log/calls");
var strOrder = android.provider.CallLog.Calls.DATE + " DESC";
var context = utilsModule.ad.getApplicationContext();
var cr=context.getContentResolver();
var curCallLogs = cr.query(callUri, null, null, null, strOrder);
//I just need latest 30 calls
for(var i=0;i<30;i++){
    curCallLogs.moveToNext();
    var strName=curCallLogs.getString(curCallLogs.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME));
    callobject.callerNumber=curCallLogs.getString(curCallLogs.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 13:53:32

您可以使用本机方式根据给定的电话号码提取名称。下面您将看到一个基本实现,演示如何将java代码转换为TypeScript。请注意,我正在使用tns-platform-声明来通过TypeScript访问本机API,并且使用nativescript-权限授予用户访问和读取联系人的权限。

代码语言:javascript
复制
let phoneNumber = "0888111111";
let lookupUri = android.net.Uri.withAppendedPath(android.provider.ContactsContract.PhoneLookup.CONTENT_FILTER_URI, android.net.Uri.encode(phoneNumber));
let contentResolver = application.android.context.getContentResolver();
let contactLookup = contentResolver.query(lookupUri, [android.provider.BaseColumns._ID,
    android.provider.ContactsContract.ContactsColumns.DISPLAY_NAME ], null, null, null);

if (contactLookup != null && contactLookup.getCount() > 0) {

    contactLookup.moveToNext();
    let name = contactLookup.getString(contactLookup.getColumnIndex(android.provider.ContactsContract.ContactsColumns.DISPLAY_NAME));
    console.log(`Found name  ${name} for number ${phoneNumber}`);
} else {
    console.log("No such number in the contacts")
}

此外,请记住,应该仔细分析这个数字。例如,它取决于联系人是使用本地运营商的电话号码输入,还是以国家的后缀+本地操作员号输入。(例如,359 888111111将找不到0888111111的结果)

演示以上内容的完整演示项目可以找到这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53262122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档