android p获取通话记录_android-从通话记录中获取最近通话的详细信息

我正在使用以下代码从通话记录中获取最近通话的详细信息.

public static CallDetails getLastCallDetails(Context context) {

CallDetails callDetails = new CallDetails();

Uri contacts = CallLog.Calls.CONTENT_URI;

try {

Cursor managedCursor = context.getContentResolver().query(contacts, null, null, null, android.provider.CallLog.Calls.DATE + " DESC limit 1;");

int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);

int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);

int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);

int incomingtype = managedCursor.getColumnIndex(String.valueOf(CallLog.Calls.INCOMING_TYPE));

while (managedCursor.moveToNext()) {

String callType;

String phNumber = managedCursor.getString(number);

String callerName = getContactName(context, phNumber);

if(incomingtype == -1){

callType = "incoming";

}

else {

callType = "outgoing";

}

String callDate = managedCursor.getString(date);

String callDayTime = new Date(Long.valueOf(callDate)).toString();

String callDuration = managedCursor.getString(duration);

callDetails.setCallerName(callerName);

callDetails.setCallerNumber(phNumber);

callDetails.setCallDuration(callDuration);

callDetails.setCallType(callType);

callDetails.setCallTimeStamp(callDayTime);

}

managedCursor.close();

} catch (SecurityException e) {

Log.e("Security Exception", "User denied call log permission");

}

return callDetails;

}

问题在于它返回的是最后一个第二个呼叫,而不是最后一个呼叫.我需要返回上一个电话.我用谷歌搜索,但无法获得完美的解决方案.请帮忙.提前致谢.

解决方法:

添加此行managedCursor.moveToFirst()

public static CallDetails getLastCallDetails(Context context) {

CallDetails callDetails = new CallDetails();

Uri contacts = CallLog.Calls.CONTENT_URI;

try {

Cursor managedCursor = context.getContentResolver().query(contacts, null, null, null, android.provider.CallLog.Calls.DATE + " DESC limit 1;");

int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);

int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);

int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);

int incomingtype = managedCursor.getColumnIndex(String.valueOf(CallLog.Calls.INCOMING_TYPE));

if(managedCursor.moveToFirst()){ // added line

while (managedCursor.moveToNext()) {

String callType;

String phNumber = managedCursor.getString(number);

String callerName = getContactName(context, phNumber);

if(incomingtype == -1){

callType = "incoming";

}

else {

callType = "outgoing";

}

String callDate = managedCursor.getString(date);

String callDayTime = new Date(Long.valueOf(callDate)).toString();

String callDuration = managedCursor.getString(duration);

callDetails.setCallerName(callerName);

callDetails.setCallerNumber(phNumber);

callDetails.setCallDuration(callDuration);

callDetails.setCallType(callType);

callDetails.setCallTimeStamp(callDayTime);

}

}

managedCursor.close();

} catch (SecurityException e) {

Log.e("Security Exception", "User denied call log permission");

}

return callDetails;

}

标签:calllog,android

来源: https://codeday.me/bug/20191026/1934790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值