Android检测到不成功的电话呼叫,稍后再试



有没有办法在一段时间后重试未接来电或不成功的呼出电话?我正在使用ACTION_CALL意图发起一个电话呼叫,并将其连接到PhoneStateListener。

class PlaceCall : AppCompatActivity() {
private fun outboundCall() {
val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
telephonyManager.listen(CallListener(context), PhoneStateListener.LISTEN_CALL_STATE)
val callIntent = Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber))
startActivity(callIntent)
}
}

CallListener的设置如下:

class CallListener(cont: Context) : PhoneStateListener() {
private var context: Context = cont
private var incoming: Boolean = false
private var prevState: Int = TelephonyManager.CALL_STATE_IDLE
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
when(state) {
TelephonyManager.CALL_STATE_RINGING -> { incoming = true }
TelephonyManager.CALL_STATE_IDLE -> {
if(prevState == TelephonyManager.CALL_STATE_RINGING) { //Missed call?
}
TelephonyManager.CALL_STATE_OFFHOOK -> { Log.d("DEBUG", "calling $phoneNumber") }
}
}
prevState = state
}
}

如果不是成功的电话连接,我如何等待确定的时间间隔并再次尝试通话?另外,为什么侦听器中phoneNumber的值总是空的?

与通过IDLE->RINGING->CCD_ 5,在出站呼叫中,它总是直接从IDLE->OFFHOOK,即使它正在振铃(在另一侧(。

因此,如果通过";"成功";你的意思是说对方接听的电话,PhoneStateListener对你没有帮助,因为对方接听时没有发送额外的状态。

此外,为什么侦听器中phoneNumber的值总是空的?

phoneNumber仅为传入呼叫填充,并且仅当您的应用程序同时具有READ_CALL_LOGREAD_PHONE_STATE权限时,请参阅此处。

如果您需要最后一次呼叫号码,您可以在呼出结束几秒钟后使用Calls.getLastOutgoingCallAPI。

相关内容

  • 没有找到相关文章

最新更新