Как вы получаете исходящий звонок в трансляторе вещания

Я пытаюсь определить и перенести на активность после начала исходящего вызова. Я использовал ACTION_NEW_OUTGOING_CALL в фильтре Intent. Однако как csn я идентифицирую, что вызов является исходящим. Я сделал это для входящего вызова (как показано ниже), но что я могу использовать вместо EXTRA_STATE_RINGING .

 public class OutgoingBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { Intent i = new Intent(context, OutgoingCallScreenDisplay.class); i.putExtras(intent); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } 

Введите описание изображения здесь

 public class OutgoingBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { // If it is to call (outgoing) Intent i = new Intent(context, OutgoingCallScreenDisplay.class); i.putExtras(intent); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } 

ACTION_NEW_OUTGOING_CALL – это константа, объявленная в классе Intent , а не в TelephonyManager . Когда появляется исходящий вызов, система передает намерение с этой константой. Если вы действительно хотите поймать исходящий вызов с помощью TelephonyManager выполните следующие действия:

 TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE); PhoneStateListener listener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { // TODO Auto-generated method stub super.onCallStateChanged(state, incomingNumber); switch(state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: if(incomingNumber==null) { //outgoing call } else { //incoming call } break; case TelephonyManager.CALL_STATE_RINGING: if(incomingNumber==null) { //outgoing call } else { //incoming call } break; } } }; 

Обнаружение исходящего вызова по телефону

1. Создайте OutgoingCallBroadcastReceiver

 public class OutgoingCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d(OutgoingCallReceiver.class.getSimpleName(), intent.toString()); Toast.makeText(context, "Outgoing call catched!", Toast.LENGTH_LONG).show(); //TODO: Handle outgoing call event here } } 

2. Зарегистрируйте OutgoingCallBroadcastReceiver в AndroidManifest.xml

 <receiver android:name=".OutgoingCallReceiver" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> 

3. Добавить разрешение в AndroidManifest.xml

 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 
Intereting Posts
Программно обрезать захват экрана Android? Как узнать, какие аппаратные требования у моего приложения для Android? Жизненный цикл фрагментов и родительской активности Как создать / использовать Календарь в приложении для Android (не как намерение) Есть ли способ добавить значок к значку приложения в Android? Почему состояние сеанса Facebook всегда близко? Уведомление GCM push. Сообщено плохое уведомление – не удалось расширить RemoteViews для: StatusBarNotification Отладка HTTPS-запросов / ответов с помощью Fiddler на Android-телефоне не работает Провайдер "gps" неизвестный исключение при попытке удалитьTestProvider Как правильно обновить сообщение уведомления api 11? Как добавить меню опций панели действий в Android Fragments Исключение Java JavaLaunchHelper при выполнении тестов Когда метод getItemCount () вызывается в адаптере RecycleView? Android: с помощью registerContentObserver (), чтобы быть уведомленным по мере изменения контактов Правильный способ преобразования байта в java в unsigned char * в C ++ и наоборот?