android PhoneStateListener onCallStateChanged странное поведение - PullRequest
0 голосов
/ 21 ноября 2018

Добрый день.Я делаю простую демонстрацию, где мне нужно сохранить текущее состояние вызова в БД.Я использую этот код в onCreate

telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

PhoneStateListener callStateListener = new PhoneStateListener() {
            public void onCallStateChanged(int state, String incomingNumber) {
                if (state == TelephonyManager.CALL_STATE_RINGING) {
                    Log.i(TAG, "onCallStateChanged: RING = "+state);

                        updateState(token, String.valueOf(state));

                }
                if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                    Log.i(TAG, "onCallStateChanged: CALL = "+state);

                        updateState(token, String.valueOf(state));
                }

                if (state == TelephonyManager.CALL_STATE_IDLE) {
                    Log.i(TAG, "onCallStateChanged: IDLE = "+state);

                        updateState(token, String.valueOf(state));
                }
            }
        };
        telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);

Странно то, что когда он находится в состоянии звонка, он не обновляется в БД, а в состоянии вне очереди он обновляется, но не обновляется до состояния ожидания после вызова,Это мой журнал:

2018-11-21 14:23:59.225 1560-1560/? D/GpsNetInitiatedHandler: onCallStateChanged(): state is 0
2018-11-21 14:23:59.226 1560-1560/? D/RilInfoMonitor: onCallStateChanged(): state is 0
2018-11-21 14:23:59.227 16884-16884/com.aliaskarurakov.android.sendcall I/android.app.Activity: onCallStateChanged: IDLE = 0
2018-11-21 14:34:31.477 17892-17892/com.aliaskarurakov.android.sendcall I/android.app.Activity: onCallStateChanged: IDLE = 0
2018-11-21 14:35:33.606 17892-17892/com.aliaskarurakov.android.sendcall I/android.app.Activity: onCallStateChanged: RING = 1
2018-11-21 14:35:33.609 1560-1560/? D/GpsNetInitiatedHandler: onCallStateChanged(): state is 1
2018-11-21 14:35:33.609 1560-1560/? D/RilInfoMonitor: onCallStateChanged(): state is 1
2018-11-21 14:35:52.874 1560-1560/? D/GpsNetInitiatedHandler: onCallStateChanged(): state is 0
2018-11-21 14:35:52.876 17892-17892/com.aliaskarurakov.android.sendcall I/android.app.Activity: onCallStateChanged: IDLE = 0
2018-11-21 14:35:52.878 1560-1560/? D/RilInfoMonitor: onCallStateChanged(): state is 0
2018-11-21 14:36:01.375 1560-1560/? D/GpsNetInitiatedHandler: onCallStateChanged(): state is 2
2018-11-21 14:36:01.379 1560-1560/? D/RilInfoMonitor: onCallStateChanged(): state is 2
2018-11-21 14:36:01.382 17892-17892/com.aliaskarurakov.android.sendcall I/android.app.Activity: onCallStateChanged: CALL = 2
2018-11-21 14:36:19.502 1560-1560/? D/GpsNetInitiatedHandler: onCallStateChanged(): state is 0
2018-11-21 14:36:19.503 1560-1560/? D/RilInfoMonitor: onCallStateChanged(): state is 0

права доступа:

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