查询通话记录
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};
/**
* <br/>
* 概述:获取最近10条通话记录 <br/>
*/
public ArrayList<PersonBean> 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 "未知";
}
}
网友评论