Frage

ich eine bereits erstellte Anwendung haben und ich möchte eine Funktion hinzuzufügen, die gestartet werden muss, wenn ein Anruf beendet. Wie kann ich das erreichen? Ich dachte, dass erklärt in meinem Manifest so etwas wie diese

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

könnte genug sein, aber was für Intent Ich habe auf dem Filter setzen?

in der Dokumentation der Suche fand ich nur die Absichten, der erkennt, wenn ein Anruf gestartet wird.

Ist das, was für mögliche ich suche?

War es hilfreich?

Lösung

Sie können das PhoneStateLisenter für Änderungen hören out in Gesprächszustand.

So Sie das hören für LISTEN_CALL_STATE ändern.

Mit dem onCallStateChanged Verfahren.

Also, wenn der Zustand von OFFHOOK zu IDLE starten Sie Ihre Anwendung

Andere Tipps

Ich habe dies einen Rundfunkempfänger unter Verwendung getan. Funktioniert! Code sieht wie folgt aus -

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> 

Die IncomingCallTracker Code-Schnipsel sieht aus wie -

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

}

Sie können im Bündel für den Schlüssel ‚Staat‘ suchen. Wenn sein Wert ‚IDLE‘ ist es Anruf beendet ist und Sie ausführen können, was Aktion, die Sie auf dieser Basis wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top