uni-app 获取通话记录特别慢,有解决方法吗?
需要等5-6秒才开始走方法是哪里有问题吗
plus.android.requestPermissions(
['android.permission.READ_CALL_LOG'],
function(e) {
if (e.deniedAlways.length > 0) {
//权限被永久拒绝
// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启
console.log('Always Denied!!! ' + e.deniedAlways.toString());
}
if (e.deniedPresent.length > 0) {
//权限被临时拒绝
// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
console.log('Present Denied!!! ' + e.deniedPresent.toString());
}
if (e.granted.length > 0) {
//权限被允许
//调用依赖获取定位权限的代码
console.log('Granted!!! ' + e.granted.toString());
}
},
function(e) {
console.log('Request Permissions error:' + JSON.stringify(e));
}
)
var CallLog = plus.android.importClass('android.provider.CallLog');
var Activity = plus.android.runtimeMainActivity();
var ContentResolver = plus.android.importClass('android.content.ContentResolver');
var resolver = Activity.getContentResolver();
plus.android.importClass(resolver);
var String = plus.android.importClass("java.lang.String");
var cs = resolver.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
plus.android.importClass(cs);
var count = 0; // 记录多少条 用于处理循环跳出
if (cs.moveToFirst()) {
while (cs.moveToNext()) {
count++;
//号码
var number = cs.getString(cs.getColumnIndex(CallLog.Calls.NUMBER));
//呼叫类型
var type;
switch (parseInt(cs.getString(cs.getColumnIndex(CallLog.Calls.TYPE))))
// 判断通话类型
{
case CallLog.Calls.INCOMING_TYPE:
type = "呼入";
break;
case CallLog.Calls.OUTGOING_TYPE:
type = "呼出";
break;
case CallLog.Calls.MISSED_TYPE:
type = "未接";
break;
default:
type = "挂断";
break;
}
// 获取时间
var date = new Date(parseInt(
cs.getString(cs.getColumnIndexOrThrow(CallLog.Calls.DATE))));
// 联系人
var Name_Col = cs.getColumnIndexOrThrow(CallLog.Calls.CACHED_NAME);
var name = cs.getString(Name_Col);
// 号码归属地 返回:北京 联通
var numberLocation = cs.getString(
cs.getColumnIndex(CallLog.Calls.GEOCODED_LOCATION)
);
//通话时间,单位:s
var Duration_Col = cs.getColumnIndexOrThrow(CallLog.Calls.DURATION);
var duration = cs.getString(Duration_Col);
// 存入数组
that.content.push({
name: name, // 联系人的姓名
mobile: number, // 联系人电话
numberLocation: numberLocation, // 号码的归属地
callTime: this.formatDate(date), // 呼入或呼出时间
talkTime: duration, // 通话时长
type: type
});
if (count > 200) {
break;
}
}
}
2 个回复
阿酸牛奶
能获取ios端的么
8***@qq.com
我也用到这个获取通话记录的权限,但我给了之后提示永久拒绝该权限,手动赋予也不行。你有过或处理过这个问题吗
我是纸飞机
你能获取到通话录音文件吗?为什么我的一直显示是一个null?
2022-10-08 15:38
我是纸飞机
自定义基座测试
2022-10-08 15:38
8***@qq.com
回复 我是纸飞机: 能拿到,但在部分机型上拿不到第一条数据
2022-10-17 11:11