我正在处理一个应用程序,在那里我需要获取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有关的内容。
我尝试过传递null值,但是它返回所有的数字。
我也尝试过用CallLog.Calls.OUTGOING_TYPE代替它,但是它会导致不允许int值的错误,它应该是一个字符串值。
任何关于如何替换上述代码的建议,以便只接到拨号电话。
Note-我已经看过https://stackoverflow.com/a/10480569/1626878,但它并没有提供只获取拨号号码的解决方案。
发布于 2012-12-13 08:24:23
我已经解决了这个问题,所以我把它张贴给未来的访客。
String mobileNumber="";
int i = 1;
String number = "";
TextView dialledCall;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dialledCall = (TextView)findViewById(R.id.dialledCall);
// 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.DURATION };
String strOrder = CallLog.Calls.DATE + " DESC";
Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null,
CallLog.Calls.TYPE + " = " + CallLog.Calls.OUTGOING_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);
}在这里,查询中的CallLog.Calls.TYPE + " = " + CallLog.Calls.OUTGOING_TYPE将拨号呼叫分开。
发布于 2012-11-17 11:58:11
您可以使用CallLog类获取这些信息(参见http://developer.android.com/reference/android/provider/CallLog.Calls.html)。
您对getLastOutgoingCall方法感兴趣,它返回最后一个电话号码。
查一下通话记录。你可以很容易地访问这个。做一些类似的事情,
定义,公开Cursor 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
};设置顺序,公共静态最终字符串STR_ORDER = android.provider.CallLog.Calls.DATE +“DESC";
调用光标。
mCallCursor = getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI,
STR_FIELDS,
null,
null,
STR_ORDER); https://stackoverflow.com/questions/13430246
复制相似问题