使用本地文本-联系人插件使用本地文本5.0 +角+ webpack
有没有办法根据电话号码来获得联系人的名字?
核心问题是-我想显示最新的电话列表。它很好,但有一个问题。
让我用一个例子来解释: 1.上午9点收到来自未知号码的电话,这显示联系人名为“未知”,电话号码在列表中
上午10:00吉姆·科贝特999988887777上午9:00未知999988887777
相反,我想显示不同的电话日志与联系人名称,如果它被保存。===或我将查询nativescript-联系人以获得使用该号码的联系人名称。(此特性在此插件中不可用)
我试着用Set()没有运气。我无法理解如何在查询的同时实现组,我对此的理解有限。
为了澄清,在程序中没有错误。
下面是使用的调用日志相关代码:
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));
}发布于 2018-11-12 13:53:32
您可以使用本机方式根据给定的电话号码提取名称。下面您将看到一个基本实现,演示如何将java代码转换为TypeScript。请注意,我正在使用tns-platform-声明来通过TypeScript访问本机API,并且使用nativescript-权限授予用户访问和读取联系人的权限。
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的结果)
演示以上内容的完整演示项目可以找到这里
https://stackoverflow.com/questions/53262122
复制相似问题