[英]Calllogs returning all logs calls as well as sms logs, how can i filter only call logs?
我试图获取Call-Logs excluding SMS
所有Call-Logs excluding SMS
但我得到一个合并列表。
如何仅过滤呼叫的呼叫记录?
我正在使用以下代码。
String[] strFields = {
android.provider.CallLog.Calls.NUMBER,
android.provider.CallLog.Calls.TYPE,
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.CACHED_NUMBER_TYPE,
android.provider.CallLog.Calls.DATE
};
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Uri calluri = Uri.parse("content://call_log/calls");
Cursor mCallCursor = getContentResolver().query(
calluri,
strFields,
null,
null,
strOrder
);
我正在使用Samsung Note 2进行测试。
我在两个三星设备上都有同样的问题。 研究这个问题表明它是三星如何处理android日志的问题,它合并它们。 显然这是不正确和不一致的行为。 注意,短信息不能通过呼叫记录api删除,但可以通过呼叫记录api检索。
CallLog.Calls提供澄清,Incomming,Outgoing和Missed的功能。 所有类型的CallLog.Calls也可以获取其他记录。
见下面的代码:
Cursor managedCursor = getActivity()。getContentResolver()。query(CallLog.Calls.CONTENT_URI,null,null,null,null); int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int name = managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME); int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); int newcall = managedCursor.getColumnIndex(CallLog.Calls.NEW); int callduration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); int id = managedCursor.getColumnIndex(CallLog.Calls._ID);
while ( managedCursor.moveToNext() ) {
callNumber = managedCursor.getString( number );
callName = managedCursor.getString(name);
callType = managedCursor.getString( type );
callDate = managedCursor.getString( date );
isCallNew = managedCursor.getString(newcall);
Date callDayTime = new Date(Long.valueOf(callDate));
duration = managedCursor.getString( callduration );
contactId = managedCursor.getString(id);
// process log data...
Log.i("Call Name-----", callNumber);
String cType = null;
int cTypeCode = Integer.parseInt(callType);
switch(cTypeCode)
{
case CallLog.Calls.OUTGOING_TYPE:
cType = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
cType= "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
cType = "MISSED";
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.