Намерение уволиться при завершении вызова?

У меня есть уже построенное приложение, и я хочу добавить функцию, которая должна быть запущена при завершении вызова. Как я могу это достичь? Я думал, что в моем манифесте что-то вроде этого

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

Может быть достаточно, но какого Intent я должен наложить на фильтр?

В документации я нашел только те намерения, которые обнаруживают при запуске вызова.

Является ли то, что я ищу, возможно?

благодаря

Вы можете использовать PhoneStateLisenter для прослушивания изменений состояния вызова.

Итак, вы слушаете изменение LISTEN_CALL_STATE .

С помощью метода onCallStateChanged .

Поэтому, когда состояние изменяется с OFFHOOK на IDLE, запустите приложение

Я сделал это с помощью широковещательного приемника. Работает! Код выглядит следующим образом:

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> ? <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> 

Фрагмент кода IncomingCallTracker выглядит так:

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

Вы можете искать ключевое «состояние» в комплекте. Когда его значение равно «IDLE», это означает, что вызов завершен, и вы можете выполнить любое действие, которое вы хотите на основе этого.