Обработка разрешений HealthConnect: в чем разница между двумя сегментами else{...}?

Я пытаюсь реализовать обработку разрешений для HealthConnect. Это делается в функцииcheckPermissionAndRun(сильно вдохновлен документацией), однако я не уверен, в чем разница между двумяelse{...}сегменты кода есть. Оба проверяют, дано ли уже разрешение, но зачем нам 2 из них? Кроме того, ничего, если я позвонюcheckpermissionandrunработать один раз в oncreate, или я должен делать это также при взаимодействии с HealthConnect?

      class MainActivity : AppCompatActivity() {

    // build a set of permissions for required data types
    val PERMISSIONS =
        setOf(
            HealthPermission.createReadPermission(HeartRateRecord::class),
            HealthPermission.createWritePermission(HeartRateRecord::class),
            HealthPermission.createReadPermission(StepsRecord::class),
            HealthPermission.createWritePermission(StepsRecord::class)
        )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val hcManager = HealthConnectManager(this)
        checkPermissionsAndRun(hcManager.healthConnectClient, PERMISSIONS)


    }

    private fun checkPermissionsAndRun(client: HealthConnectClient, PERMISSIONS: Set<HealthPermission>) {
        val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
        val requestPermissions =
            registerForActivityResult(requestPermissionActivityContract) { granted ->
                if (granted.containsAll(PERMISSIONS)) {
                    //Permission granted text 1
                    Toast.makeText(applicationContext, "permissions granted 1", Toast.LENGTH_SHORT).show()
                } else {
                    // Lack of required permissions, But what is different to the coroutine else below?
                }
            }
        lifecycleScope.launch {
            val granted = client.permissionController.getGrantedPermissions(PERMISSIONS)
            if (granted.containsAll(PERMISSIONS)) {
                //Permission Granted text 2
                Toast.makeText(applicationContext, "permissions granted 2", Toast.LENGTH_SHORT).show()
            } else {
                //lack of required permissions
                requestPermissions.launch(PERMISSIONS)
            }
        }
    }

}

заранее спасибо

0 ответов

Другие вопросы по тегам