Как узнать, звоню ли я на Android?

Я хочу знать, звоню ли я.

Если я нахожусь в вызове, тогда запустите сервис (часть сервиса понятна). Как мне это сделать?

Посещая звонок, мне нужно позвонить в службу … Я не знаю, как это сделать? Любая помощь?

Solutions Collecting From Web of "Как узнать, звоню ли я на Android?"

Вам нужен широковещательный приемник …

В манифесте объявляют вещательный приемник …

<receiver android:name=".PhoneStateBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/> </intent-filter> </receiver> 

Также объявлять использование-разрешение …

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Класс вещательного приемника …

 package xy; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; public class PhoneStateBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE); } } 

И один класс для настройки прослушивателя состояния телефона …

 package xy; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; public class CustomPhoneStateListener extends PhoneStateListener { //private static final String TAG = "PhoneStateChanged"; Context context; //Context to make Toast if required public CustomPhoneStateListener(Context context) { super(); this.context = context; } @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: //when Idle ie no call Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_OFFHOOK: //when Off hook ie in call //Make intent and start your service here Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_RINGING: //when Ringing Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show(); break; default: break; } } } 

TelephonyManager.getCallState () возвращает один из CALL_STATE_IDLE, CALL_STATE_OFFHOOK, CALL_STATE_RINGING

Если это соответствует вашим требованиям, это намного меньше кода, чем более полное решение Pied Piper.

Вы можете узнать только, что вызов идет, но вы не можете это изменить. 🙁 см. Это почему 2.3 версия андроида не hava android.permission.MODIFY_PHONE_STATE? И для чего это решение?