Intention d'être tiré à la fin d'appel?
-
21-09-2019 - |
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?
La solution
Vous pouvez utiliser le PhoneStateLisenter pour écouter sur des changements dans l'état d'appel.
Vous écoutez le LISTEN_CALL_STATE changement.
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.