我有一個任務需要取消。“client.startSmsRetriever()”回傳任務。沒有像 cancel()、remove() 等方法。我怎樣才能做到這一點?
val task = client.startSmsRetriever()
task.addOnSuccessListener {
Log.d("TEST VERIFICATION", "startRetriever: Success")
val smsBroadcastReceiver = SmsBroadcastReceiver()
smsBroadcastReceiver.setSMSListener(object : SmsBroadcastReceiver.SmsReceiverListener {
override fun onSMSReceived(verificationCode: String) {
binding.verificationCodeEditText.setText(verificationCode)
cachedActivity.unregisterReceiver(smsBroadcastReceiver)
}
})
val filter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
cachedActivity.registerReceiver(smsBroadcastReceiver, filter)
}
task.addOnFailureListener { ex ->
Log.e("TEST retrieveSMS", ex.message.toString())
}
uj5u.com熱心網友回復:
不幸的是,一旦開始,就無法取消任務。API 檔案沒有提到這種方法。
如果您出于某種原因打算取消它,我建議您研究為什么它需要取消,而不是在這種情況下首先啟動任務。或者在最壞的情況下,您必須在任務完成后撤消該操作。
https://developers.google.com/android/reference/com/google/android/gms/auth/api/phone/SmsRetrieverClient
您可以查看 API 指南,您能做的最好的事情就是添加一個失敗偵聽器,您已經必須決定接下來的步驟。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/440841.html
