Im используя PhoneStateListener, чтобы узнать, когда телефон находится в активном вызове, и когда вызов заканчивается и регистрируется, он был во входящем или исходящем вызове. когда я устанавливаю слушатель, он работает как ожидается при первом вызове. Потерпите, что, хотя он все еще работает, он возвращает информацию для кулачного вызова, а также второго вызова. На третьем вызове он возвращает информацию для 3 вызовов и т.д. Как получить информацию только для активного вызова? Код ниже, любая помощь приветствуется
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
mIntent = intent;
mlocManager= (LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int events = PhoneStateListener.LISTEN_CALL_STATE;
tm.listen(phoneStateListener, events);
}
private final PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
Log.e("GO", incomingNumber);
String number = null;
String callState = "UNKNOWN";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
callState = "IDLE";
break;
case TelephonyManager.CALL_STATE_RINGING:
// -- check international call or not.
callState = "INCOMING";
number = incomingNumber;
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
number = mIntent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
callState = "OUTGOING";
break;
}
super.onCallStateChanged(state, incomingNumber);
}
};
Отвечая на мой вопрос. Этот код создает несколько прослушивателей для каждого вызова. Я должен остановить слушателя после завершения вызова с помощью следующей строки
tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);