Question

J'ai une application déjà construit et je veux ajouter une fonctionnalité qui doit être lancé à la fin d'appel. Comment puis-je y parvenir? Je pensais que déclarer dans mon manifeste quelque chose comme ceci

<activity android:name="Filter">
    <intent-filter>
            <category android:name="android.intent.SOMETHING" />
    </intent-filter>
</activity>

pourrait être suffisant, mais quel genre de Intent je dois mettre sur le filtre?

Recherche dans la documentation que j'ai trouvé que les intentions qui détecte lorsqu'un appel est lancé.

Est-ce que je suis à la recherche possible?

Était-ce utile?

La solution

Vous pouvez utiliser le PhoneStateLisenter pour écouter sur des changements dans l'état d'appel.

Vous écoutez le LISTEN_CALL_STATE changement.

onCallStateChanged procédé .

Alors, quand les changements d'état de DECRO à IDLE démarrer votre application

Autres conseils

Je l'ai fait à l'aide d'un récepteur de radiodiffusion. Travaux! code ressemble à ceci -

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> 

L'extrait de code IncomingCallTracker ressemble -

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));
        }       
    }

}

Vous pouvez chercher la clé « Etat » dans le paquet. Lorsque sa valeur est « IDLE » cela signifie que l'appel est terminé et vous pouvez effectuer toutes les mesures que vous voulez sur cette base.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top