Obtener el número de teléfono de la llamada entrante y saliente actual

Estoy creando una aplicación en la que tengo que recuperar el número de teléfono y puedo recuperarlo, pero mi problema es que obtengonúmero de teléfono deúltima llamada más bien quellamada actual.Mi código es el siguiente:

projection = new String[]{Calls.NUMBER};
cur = context.getContentResolver().query(Calls.CONTENT_URI, projection, null, null, null);
cur.requery();
numberColumn = cur.getColumnIndex(Calls.NUMBER);
cur.requery();
cur.requery();
cur.requery();
cur.requery();
cur.moveToLast();
s = cur.getString(numberColumn);
String pathname = "/sdcard/" + s + ".amr";