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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top