安卓随机通话记录_Android 通话记录

该代码段展示了如何使用Android ContentResolver查询并解析最近的通话记录。它获取通话记录的详细信息,包括号码、类型、日期和时长,并转换为自定义的PersonBean对象。此外,还提供了将秒数转换为小时、分钟和秒的函数,以及根据通话类型返回描述的函数。
摘要由CSDN通过智能技术生成

查询通话记录

private static final String[] CALLLOGS_PROJECTION = new String[]{CallLog.Calls._ID,

CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER, CallLog.Calls.TYPE, CallLog.Calls.DATE,

CallLog.Calls.DURATION};

/**

*

* 概述:获取最近10条通话记录

*/

public ArrayList getCallLogs() {

mCallLogBeans.clear();

ContentResolver resolver = mContext.getContentResolver();

// 获取手机联系人

@SuppressLint("MissingPermission")

Cursor phoneCursor = resolver.query(CallLog.Calls.CONTENT_URI,

CALLLOGS_PROJECTION, null, null, "date DESC");

if (phoneCursor != null) {

while (phoneCursor.moveToNext()) {

// 得到手机号码

String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);

// 当手机号码为空的或者为空字段 跳过当前循环

if (TextUtils.isEmpty(phoneNumber))

continue;

// 得到联系人名称,通过数据库查询的方式有的手机有问题,通话记录不会缓存联系人姓名(中兴天机7),只能去查通讯录对应的人名

String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);

if (TextUtils.isEmpty(contactName)) {

contactName = getPhoneTrueName(phoneNumber);

}

if (TextUtils.isEmpty(contactName)) continue;

PersonBean bean = new PersonBean();

bean._id = phoneCursor.getLong(phoneCursor.getColumnIndex(CallLog.Calls._ID));

bean.name = contactName;

bean.phoneNum = phoneNumber.replace(" ", "").replace("+86", "");

bean.date = phoneCursor.getLong(phoneCursor.getColumnIndex(CallLog.Calls.DATE));

bean.duration = phoneCursor.getString(phoneCursor.getColumnIndex(CallLog.Calls.DURATION));

bean.type = phoneCursor.getInt(phoneCursor.getColumnIndex(CallLog.Calls.TYPE));

bean.pinyinName = Pinyin.toPinyin(bean.name, "");

LogUtils.instance().d(TAG, "PersonBean [" +bean.toString()+"]");

boolean isContained = false;

for (PersonBean bean2 : mCallLogBeans) {

if (bean2.phoneNum.equals(bean.phoneNum)) {

isContained = true;

break;

}

}

if (!isContained) {//如果没有这个号码则加入数组

mCallLogBeans.add(bean);

if (mCallLogBeans.size() > 8) {

break;

}

}

}

phoneCursor.close();

}

return mCallLogBeans;

}

秒数转时长

public static long[] secondNum2Time(String timeStr) {

long[] longs = new long[]{0,0,0};

if (TextUtils.isEmpty(timeStr)) return longs;

long time = Long.parseLong(timeStr);

long hour = time / 3600;

long minute = time / 60 % 60;

long second = time % 60;

longs[0] = hour;

longs[1] = minute;

longs[2] = second;

return longs;

}

通话记录的type

public String getTypeStr() {

if (CallLog.Calls.INCOMING_TYPE == type) {

return "来电";

} else if (CallLog.Calls.OUTGOING_TYPE == type) {

return "去电";

}else if (CallLog.Calls.MISSED_TYPE == type) {

return "未接";

}else if (CallLog.Calls.VOICEMAIL_TYPE == type) {

return "语音邮件";

}else if (CallLog.Calls.REJECTED_TYPE == type) {

return "拒绝";

}else if (CallLog.Calls.BLOCKED_TYPE == type) {

return "阻止";

} else {

return "未知";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值