一、 获取Android通话记录
- 首先,先得获取到Android手机通话记录的权限 点击这里→ 查看获取权限的方法。
- 代码如下:
var CallLog = plus.android.importClass("android.provider.CallLog");
var main = plus.android.runtimeMainActivity();
var obj = main.getContentResolver();
plus.android.importClass(obj);
//查询
var cursor = obj.query(
CallLog.Calls.CONTENT_URI,
null,
null,
null,
null
);
plus.android.importClass(cursor);
var content = []; // 用来存储数据
var count = 0; // 记录多少条
if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
count++;
//号码
var number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
//呼叫类型
var type;
switch (
parseInt(cursor.getString(cursor.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(
cursor.getString(cursor.getColumnIndexOrThrow(CallLog.Calls.DATE)))
);
// 联系人
var Name_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.CACHED_NAME);
var name = cursor.getString(Name_Col);
// 号码归属地 返回:北京 联通
var numberLocation = cursor.getString(
cursor.getColumnIndex(CallLog.Calls.GEOCODED_LOCATION)
);
//通话时间,单位:s
var Duration_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.DURATION);
var duration = cursor.getString(Duration_Col);
// 存入数组
content.push({
name: name, // 联系人的姓名
mobile: number, // 联系人电话
numberLocation: numberLocation, // 号码的归属地
callTime: new Date().getTime(date), // 呼入或呼出时间
talkTime: duration, // 通话时长
type: type
});
// 查询50条 就跳出
if (count > 50) {
break;
}
}
}
console.log(content)
二、 获取Android短信内容
- 首先,先得获取到Android手机短信的权限 点击这里→ 查看获取权限的方法。
- 代码如下:
//Sms存放所有短信
var Sms = [];
var Cursor = plus.android.importClass("android.database.Cursor");
var Uri = plus.android.importClass("android.net.Uri");
//注意啦,android.net.Uri中的net是小写
var activity = plus.android.runtimeMainActivity();
var uri = Uri.parse("content://sms/");
var projection = new Array(
"_id",
"address",
"person",
"body",
"date",
"type"
);
var cusor = activity.managedQuery(
uri,
projection,
null,
null,
"date desc"
);
var idColumn = cusor.getColumnIndex("_id");
var nameColumn = cusor.getColumnIndex("person");
var phoneNumberColumn = cusor.getColumnIndex("address");
var smsbodyColumn = cusor.getColumnIndex("body");
var dateColumn = cusor.getColumnIndex("date");
var typeColumn = cusor.getColumnIndex("type");
if (cusor != null) {
while (cusor.moveToNext()) {
Sms.push({
id: usor.getString(idColumn), // 就是id
person: cusor.getInt(nameColumn), // 发送人
Date: cusor.getLong(dateColumn), // 时间
address: cusor.getString(phoneNumberColumn), // 可以说是电话号码吧
SmsInfo: cusor.getString(smsbodyColumn), // 内容
type: cusor.getString(typeColumn) // 类型
});
}
cusor.close(); // 防止内存泄漏的 但我这开启了会导致app闪退
}
这是个api