좀 이상한 부분이 AndroidManifest.xml에 CallReceiver를 등록한 건 맞아 보이는데, 아래 권한에 대한 처리가 필요해 보이는데 하고 계신지 궁금하구요.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
그리고, CallReceiver는 BroadCastReceiver인데, startService를 하는 부분도 이상합니다. 제가 알기로 BroadCastReceiver는 register/unregisterReceiver메소드를 사용해야 하는 걸로 알고 있고요, AndroidManifest.xml에 BroadCastReceiver가 등록이 되어 있다면 시스템에서 자동으로 등록해주므로, register/unregister할 필요가 없습니다.
CallReceiver의 registerCustomEelephonyCallback 메소드 안에 있는
context.getMainExecutotr()
는 실행해 보면 에러입니다. 왜냐하면 BroadCastReciver의 context는 ReceiverRestrictedContext 인데, 이게 안드로이드 내부 클래스로 접근이 불가능하네요. 그리고 getMainExecutor라는 메소드를 찾을 수 없는 것으로 나옵니다.
다른 방법으로는 TelephonyManager를 사용할 수도 있습니다.