I similarly read calls from the log post-call and experienced some issues but have a working solution. There are two things to consider:
1) I had trouble on some devices when using the constant
CallLog.Calls.CONTENT_URI
Try using the URI string directly instead:
Uri.parse("content://call_log/calls")
2) You are reading the call log too fast after the end of a call, sleep your Listener for 1000ms to let the call log update before querying it.