Беда с чтением состояния телефона - PullRequest
3 голосов
/ 05 января 2012

Я хочу выполнить какую-либо операцию (приостановить игру) в моем приложении при поступлении вызова.Но чтение состояния телефона не работает.Я дал разрешение (READ_PHONE_STATE) в манифесте.Ничего не происходит, когда пришел звонок.Спасибо.

TelephonyManager telephonyManager;
PhoneStateListener listener;
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
*
*
*
listener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

        switch (state) {
        case TelephonyManager.CALL_STATE_IDLE:
            Toast.makeText(SudokuGameActivity.this, "IDLE", Toast.LENGTH_SHORT).show();
          break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
         Toast.makeText(SudokuGameActivity.this, "OFF Hook", Toast.LENGTH_SHORT).show();
          break;
        case TelephonyManager.CALL_STATE_RINGING:
            Toast.makeText(SudokuGameActivity.this, "Ringing", Toast.LENGTH_SHORT).show();
            mpauseButton.performClick();
          break;
          }

        }
       };

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Вы написали следующую строку:

 telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
1 голос
/ 05 января 2012

когда ваш слушатель создан, вам нужно вызвать `public void listen (PhoneStateListener listener, int events) 'для прослушивания.

также вы можете попробовать это: создать приемник broadcatst, обрабатывающий действие android.intent.action.PHONE_STATE,

пример кода:

public class PhoneStateReceiver extends BroadcastReceiver {

private TelephonyManager manager;

@Override
public void onReceive(Context context, Intent intent) {
    if (manager == null) {
        manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    }
    String action = intent.getAction();
    System.out.println(action);
    System.out.println("current phone state:" + manager.getCallState());
}

}

...