전화 상태 변화 감지하기
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)
}