+1  A: 

In my opinion you use BroadcastReciver in wrong way. You perform sync-query which can last more time than you have for handling broadcast. Next issue - you register listener object which will be probably collected by GC just after the end of onReceive method. Your BroadR should start service for handling those events.

Damian Kołakowski
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>was the reason. I did not have it in the manifest file!