我正在开发一个应用程序,需要获取最近拨打的5个电话号码。我已经能够按降序排列这些号码,以便最近拨打的号码排在前面。我使用以下代码获取最近的号码:
dialledCall = (TextView)findViewById(R.id.dialledCall);
String strOrder = CallLog.Calls.DATE + " DESC";
Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null,
CallLog.Calls.TYPE
,null,
strOrder);
mCallCursor.moveToFirst();
do {
if( i >5 )
break;
mobileNumber = mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
number += mobileNumber + "\n";
i++;
}
while (mCallCursor.moveToNext());
dialledCall.setText(number);
通过这个,我能够按照最近的顺序排序数字并且我只获取了最后5个数字。但是查询返回的是所有数字,包括已拨、未接和已接电话。然而,我只想要已拨出的号码。
我知道上面的查询与CallLog.Calls.TYPE
有关。
我尝试过传递空值,但它返回所有数字。
我还尝试了将其替换为CallLog.Calls.OUTGOING_TYPE
,但是它给出错误提示,即int值不被允许,应该是一个字符串值。
有任何建议来替换上面的代码,以便只获取打出的电话呢?
注意- 我已经查看过https://stackoverflow.com/a/10480569/1626878,但它没有提供仅获取拨出电话的解决方案。