- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个应用程序,我需要在其中获取 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 , 但它没有提供仅获取已拨号码的解决方案。
最佳答案
您可以使用 CallLog 类来获取此信息(请参阅 http://developer.android.com/reference/android/provider/CallLog.Calls.html)。
您对 getLastOutgoingCall 方法感兴趣,该方法返回最后调用的电话号码。
检查通话记录。您可以轻松访问它。做类似的事情,
定义,public 游标 mCallCursor
;
然后定义你想从通话记录中获取的字段,
public static final String[] STR_FIELDS = {
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,
android.provider.CallLog.Calls.DURATION, android.provider.CallLog.Calls.CACHED_NUMBER_LABEL,android.provider.CallLog.Calls.NUMBER
};
设置顺序,public static final String STR_ORDER = android.provider.CallLog.Calls.DATE + "DESC";
调用游标。
mCallCursor = getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI,
STR_FIELDS,
null,
null,
STR_ORDER);
关于android - 如何获取最近拨过的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430246/
我编写了一个与 wpa_supplicant 对话的小型库。我已经验证它适用于测试应用程序,但我也想添加一个单元测试。我的单元测试无法连接到 unix 套接字。我收到错误“没有这样的文件或目录”,但两
我是一名优秀的程序员,十分优秀!