Also, you in addition to declare required permission like android.permission.READ_PHONE_STATE , android.permission.PROCESS_OUTGOING_CALLS in the manifest , you must obtain those permissions explicitly from user at run-time. Otherwise you will not receive some(most) system broadcasts. Android developer guide has a nice explanation on requesting permissions from user and code sample. https://developer.android.com/training/permissions/requesting