【发布时间】:2014-10-19 04:09:24
【问题描述】:
我从 Phonestatelistener 知道,我们将了解呼叫类型,如来电、振铃或接听等。但是一旦呼叫结束,即一旦电话进入空闲状态,我想知道呼叫的状态是什么,是它选择、错过或拒绝
接听吧,+91123456789是来电,通话结束后,该号码将作为未接来电存储在通话记录中,
有没有办法从通话记录中获取特定号码 +91123456789 的最近状态,有可能吗?
【问题讨论】:
标签: android
我从 Phonestatelistener 知道,我们将了解呼叫类型,如来电、振铃或接听等。但是一旦呼叫结束,即一旦电话进入空闲状态,我想知道呼叫的状态是什么,是它选择、错过或拒绝
接听吧,+91123456789是来电,通话结束后,该号码将作为未接来电存储在通话记录中,
有没有办法从通话记录中获取特定号码 +91123456789 的最近状态,有可能吗?
【问题讨论】:
标签: android
这是可以查询未接电话的通话记录的代码。基本上,您必须触发此操作并确保给通话记录一些时间(应该几秒钟)以写入信息,否则如果您过早检查通话记录,您将找不到最近的通话。
int MISSED_CALL_TYPE = android.provider.CallLog.Calls.MISSED_TYPE
final String[] projection = null;
final String selection = null;
final String[] selectionArgs = null;
final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor cursor = null;
try{
// cursor = context.getContentResolver().query(
// Uri.parse("content://call_log/calls"),
// projection,
// selection,
// selectionArgs,
// sortOrder);
cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + "=? ", yourNumber, sortOrder);
while (cursor.moveToNext()) {
String callLogID = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls._ID));
String callNumber = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
String callDate = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.DATE));
String callType = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.TYPE));
String isCallNew = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NEW));
if(Integer.parseInt(callType) == MISSED_CALL_TYPE && Integer.parseInt(isCallNew) > 0){
if (_debug) Log.v("Missed Call Found: " + callNumber);
break ;
}
}
}catch(Exception ex){
if (_debug) Log.e("ERROR: " + ex.toString());
}finally{
cursor.close();
}
我希望你觉得这很有用,就像你可以得到其他状态一样。
在清单中添加此权限 android.permission.READ_CONTACTS
【讨论】: