У вас может быть класс, расширяющий PhoneStateListener , где вы должны onCallStateChanged метод. Как только состояние телефона изменится на TelephonyManager.CALL_STATE_IDLE , вы можете проанализировать журнал вызовов:
final String[] callsProjection = new String[] { Calls.TYPE, Calls.DURATION, Calls.DATE, Calls.NUMBER };
final Cursor cursor = mContext.getContentResolver().query(Calls.CONTENT_URI, callsProjection, null, null, Calls.DATE + " DESC");
Получив эту информацию, вы можете легко проверить последнюю запись для типа вызова:
if (cursor.moveToFirst()) {
final int idType = cursor.getColumnIndex(Calls.TYPE);
if(t == Calls.INCOMING_TYPE) {
} else if (t == Calls.OUTGOING_TYPE) {
} else { /* missed call */ }
}
cursor.close();
ПРИМЕЧАНИЕ: Перед анализом журнала вызовов может потребоваться подождать несколько секунд (3 должно быть достаточно), просто чтобы убедиться, что информация записывается в журнал!