para - marcador automatico de llamadas android
Reemplazo en la aplicaciĆ³n de llamada (1)
De acuerdo con los docs y como usted mismo comenta, debe agregar esto en su manifiesto :
<service android:name="your.package.YourInCallServiceImplementation"
android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
android:name
debe ser reemplazado por la clase que implementa este servicio.
<activity android:name="your.package.YourDialerActivity">
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:name
debe ser reemplazado por la clase que implementa la actividad principal para su propia implementación de marcador.
Aquí puede encontrar más información sobre esto: https://developer.android.com/guide/topics/connectivity/telecom/selfManaged
Y aquí hay un proyecto de ejemplo que puede usar como guía: https://github.com/arekolek/simple-phone
Y esto: https://stackoverflow.com/a/49835987/1916449
Fondo
Estoy tratando de desarrollar una aplicación en llamada realmente simple para reemplazar la versión original. Básicamente, solo quiero responder a las llamadas entrantes y presentar al usuario una IU personalizada realmente simple. No hay necesidad de llamadas salientes o cualquier cosa de lujo.
Buscando en la web, he encontrado el paquete android.telecom.incallservice
(disponible en API 23). Este servicio es implementado por cualquier aplicación que desee proporcionar la interfaz de usuario para administrar las llamadas telefónicas.
Parece prometedor, pero tengo problemas para que funcione. He creado un servicio simple que extiende InCallService y lo he declarado en mi manifiesto tal como lo describen los documentos. Sin embargo, espero poder cambiar la aplicación de teléfono predeterminada en la configuración a mi propio nivel, pero solo puedo encontrar la aplicación de teléfono de valores.
Código
Esta es la declaración manifiesta de los documentos. He reemplazado BIND_IN_CALL_SERVICE
con BIND_INCALL_SERVICE
desde que creo que este es un error tipográfico.
<service android:name="your.package.YourInCallServiceImplementation" android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
Preguntas
¿Es incluso posible que una aplicación de terceros reemplace la aplicación predeterminada en la llamada?
¿Hay alguna implementación de ejemplo que use esta API por ahí que pueda usar como referencia? He encontrado la implementación de Google , pero esta es una aplicación del sistema que hace uso de algunos permisos que no están disponibles para otras aplicaciones (por ejemplo,
android.permission.MODIFY_PHONE_STATE
).¿Estoy en lo cierto al suponer que después de proporcionar un registro de manifiesto
InCallService
correcto y una implementación de código auxiliar podría esperar encontrar mi aplicación enDefault Apps -> Phone
? ¿Necesito declarar algo más?
Gracias.