La intención de ser despedido cuando termina una llamada?
-
21-09-2019 - |
Pregunta
Tengo una ya construida de la aplicación y quiero agregar una característica que tiene que empezar cuando termina una llamada.¿Cómo puedo lograr esto?Pensé que declarar en mi manifiesto algo como esto
<activity android:name="Filter">
<intent-filter>
<category android:name="android.intent.SOMETHING" />
</intent-filter>
</activity>
podría ser suficiente, pero, ¿qué tipo de Intent
Me tengo que poner en el filtro?
Buscando en la documentación que he encontrado sólo de las intenciones que detecta cuando una llamada se inicia.
Es lo que estoy buscando es posible?
Solución
Puede utilizar el PhoneStateLisenter para escuchar a los cambios en el estado de la llamada.
Así se escucha para el LISTEN_CALL_STATE cambio.
Con la onCallStateChanged método .
Así que cuando cambia el estado de DESCOLGADO al estado de reposo iniciar la aplicación
Otros consejos
He hecho esto usando un receptor de radiodifusión. ¡Trabajos! código es el siguiente -
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gopi"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".IncomingCallTracker">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
</manifest>
El fragmento de código IncomingCallTracker parece -
public class IncomingCallTracker extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Set<String> keys = bundle.keySet();
for (String key : keys) {
Log.i("MYAPP##", key + "="+ bundle.getString(key));
}
}
}
Puede buscar la llave 'estado' en el paquete. Cuando su valor es 'inactivo' que significa llamada ha terminado y se puede realizar cualquier acción que desee en base a esto.