I'm making a call blocker for Android api 29. In order to do this, I have a class that extends CallScreeningService as explained here. My app can detect incoming and outgoing calls, but I don't know how to extract the phone number from Call.Details:
@RequiresApi(api = Build.VERSION_CODES.N)
public class CallScreenService extends CallScreeningService {
@RequiresApi(api = Build.VERSION_CODES.Q)
@Override
public void onScreenCall(Call.Details callDetails) {
CallResponse.Builder response = new CallResponse.Builder();
Log.i("CallScreeningService", callDetails.toString());
}
}
The log outputs "tel:**********" which I suspect means I don't have sufficient permissions to read the phone number. In Main I'm requesting permissions for all of the following:
android.Manifest.permission.READ_CONTACTS,
android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.READ_CALL_LOG,
android.Manifest.permission.PROCESS_OUTGOING_CALLS,
android.Manifest.permission.ANSWER_PHONE_CALLS,
Manifest.permission.CALL_PHONE
Additionally here is my Manifest for my CallScreening class:
<service android:name=".phoneHandlers.CallScreenService"
android:permission="android.permission.BIND_SCREENING_SERVICE">
<intent-filter>
<action android:name="android.telecom.CallScreeningService"/>
</intent-filter>
</service>
How can I read the phone number in Call.Details?