如何解决如何获取 Google 帐户数据以从 Android 上的 Google Fit API 获取步骤?
我想从 Android 上的 Google Fit API 访问步数。我有以下一段代码,当单击按钮时执行 tryToAccessstepsFromGoogleFit()
:
val fitness_OPTIONS: fitnessOptions = fitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA,fitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA,fitnessOptions.ACCESS_READ)
.build()
private fun tryToAccessstepsFromGoogleFit() {
val account = GoogleSignIn.getAccountForExtension(requireContext(),fitness_OPTIONS)
// all fields of account are empty
if (!GoogleSignIn.hasPermissions(account,fitness_OPTIONS)) {
Log.i(TAG,"Asking for permission")
GoogleSignIn.requestPermissions(
this,GOOGLE_FIT_STEPS_PERMISSIONS_REQUEST_CODE,account,fitness_OPTIONS
)
} else { // this branch is executed which is weird
Log.i(TAG,"Already has permissions")
accessstepsFromGoogleFit()
}
}
private fun accessstepsFromGoogleFit() {
Log.i(TAG,"Accessing steps from Google Fit")
val account = GoogleSignIn.getAccountForExtension(requireContext(),fitness_OPTIONS)
fitness.getHistoryClient(this.activity!!,account)
.readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
.addOnSuccessListener { result ->
// do whatever with the result
}
.addOnFailureListener { e ->
Log.i(TAG,"There was a problem getting steps: " + e.localizedMessage)
Toast.makeText(context,R.string.permission_not_granted,Toast.LENGTH_LONG).show()
// this branch is executed and error happens "4: The user must be signed in to make this API call."
}
}
这或多或少类似于 Google Fit android API 文档中的那个。
问题在于,getAccountForExtension
似乎没有返回任何合理的帐户数据,也没有表现出任何意图提示用户选择他们的帐户并授予对 Google 健身数据的访问权限。 我应该怎么做才能实现这一目标?
private fun startSignInIntent() {
val signInClient: GoogleSignInClient = GoogleSignIn.getClient(
this.activity!!,GoogleSignInoptions.DEFAULT_SIGN_IN
)
val intent = signInClient.signInIntent
startActivityForResult(intent,GOOGLE_ACCOUNT_CHOSEN)
}
显示上面的对话框,然后使用 GoogleSignIn.getAccountForExtension
允许从 fitness API 获取数据,但文档没有说明这一点。
可能有用的信息:
- SDK 目标版本:29
- Android 9
- 在 Miui Global 11.0.4 上测试
- 我已经在 Google Developers Console 中创建了一个项目,提供了 SHA1,为此项目启用了 fitness 等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。