Android取消任务<void>

Android cancel Task<void>

我有一个任务需要取消。 “client.startSmsRetriever()”returns 任务。没有 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())
    }

遗憾的是,任务一旦开始就无法取消。 API 文档没有提到这种方法。

如果您出于某种原因打算取消它,我建议您研究为什么它需要取消,而不是在这种情况下首先开始任务。或者在最坏的情况下,您必须在任务完成后撤消该操作。

https://developers.google.com/android/reference/com/google/android/gms/auth/api/phone/SmsRetrieverClient

您可以查看 API 指南,最好的办法是添加一个失败侦听器,您已经需要它来决定下一步。