请求Google Fit范围的权限时循环播放

时间:2019-08-22 20:46:25

标签: android google-play-services google-oauth google-fit

在请求Google Fit的权限时,我定义了两个我需要访问的范围。 Google会提示每个人都允许,并允许用户单独接受/拒绝每个人。但是,如果用户接受一个但不接受另一个,则Google将关闭并重新打开提示,再次要求用户许可。我在onActivityResult中没有任何回调。 如果用户接受或拒绝两个权限,一切都会按预期进行。

据我所知,我的代码遵循Google Fit开发人员指南中的示例代码。这是在Android 28(Pie)上发生的。

private val fitnessOptions = FitnessOptions.builder().apply {
    // Sensor scope
    addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
    // Activity scope
    addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
}.build()
GoogleSignIn.requestPermissions(
    fragment,
    REQUEST_CODE_GOOGLE_FIT_PERMISSION,
    GoogleSignIn.getLastSignedInAccount(fragment.requireContext()),
    fitnessOptions
)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_GOOGLE_FIT_PERMISSION) {
        val task = GoogleSignIn.getSignedInAccountFromIntent(data)
        if (task.isSuccessful) {
            // Handle success
        } else {
            // Handle failure
        }
    } else if (requestCode == REQUEST_CODE_GOOGLE_FIT_PERMISSION) {
        // Handle permission denied
    } else {
        super.onActivityResult(requestCode, resultCode, data)
    }
}

如果用户拒绝其中一项权限,则不会回调onActivityResult。用户只是陷入了Google请求权限的循环中。

0 个答案:

没有答案