전화 상태 변화 감지하기

android.permission.READ_PHONE_STATE

TelephonyCallback을 구현한 객체를 TelephonyManager에 등록하면 된다

telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
telepheonyManager.registerTelephonyCallback(
	mainExecutor,
	object: TelephonyCallback(), TelephonyCallback.CallStateListener {
		override fun onCallStateChnaged(state: Int) {
			// ...
		}
	}
)

상태 변화를 감지하는 인터페이스는 대표적으로 다음과 같다

또한 TelePhonyManager는 다음 함수도 제공한다

전화 번호 얻기

android.permission.READ_PHONE_NUMBERS

api 33 이전까지는 TelephonyManager의 getLine1Number 함수를 사용했지만 33 이후부터는 SubscriptionManager의 getPhoneNumber 함수를 권장한다

val subscriptionManager = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager

for(subscriptionInfo: SubscriptionInfo in subscriptionManager.activeSubscriptionInfoList) {
	val activeSubscriptionId: Int = subscriptionInfo.subscriptionId
	val phoneNumber = subscriptionSumber.getPhonenumber(activeSubscriptionId)
}