Android

[Android] TelephonyManager 통화상태 확인하기

HAINIX_X 2020. 6. 2. 17:32
반응형

안드로이드 어플을 플레이 스토어에 등록할 때 통화 중일 때 노래가 나오면 반려되는 경우가 있었다.

그래서 통화 상태를 구해 코딩을 해봤다

 

1. AndroidManifest.xml

 통화 상태를 확인하려면 권한이 무조건 있어야 하니 추가해 주자. 참고로 플레이스토어 등록할 때 이 권한을 필요로 하는 앱이라면 이용약관이 필요하다.

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

 

 

2. 노래가 나오는 activity

  TelephonyManager telephonyManager;
  boolean isCalling = false;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
      telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
      
      
      if(isCalling) {
          // 통화중 일 때 원하는 코드 사용
      }
      
  }

	/** 전화 수신 이벤트 : READ_PHONE_STATE 필요 **/
    PhoneStateListener phoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String phoneNumber) {
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE :
                    // 통화중이 아닐 때
                    isCalling = false;
                    break;

                case TelephonyManager.CALL_STATE_OFFHOOK :
                    // 통화중
                    isCalling = true;
                    break;

                case TelephonyManager.CALL_STATE_RINGING :
                    // 전화 벨이 울릴 때
                    isCalling = true;
                    break;
            }
        }
    };

 

 

반응형