1

我从 WearOS 设备连接到 Google Fitness API 时遇到问题。我想用手表将心率记录到 Google Fit。我认为我的权限有一些问题:

  • 我构建了一个 FitnessOptions 对象,列出了所需的数据类型。-onCreate()

    fitnessOptions = FitnessOptions.builder()
        .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_WRITE)
        .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
        .build();
    
  • 如果需要,我请求权限,否则尝试连接 -onResume()

    if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) {
        Log.d(TAG, "Will request permissions.");
        GoogleSignIn.requestPermissions(
                this, // your activity
                GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
                GoogleSignIn.getLastSignedInAccount(this),
                fitnessOptions);
    } else {
        Log.d(TAG, "Will access google fit.");
        accessGoogleFit();
    }
    

在这里我遇到了一个问题:GoogleSignIn按预期启动一项活动并要求我登录。我选择帐户,该帐户结束登录活动并恢复我的活动。而且我仍然没有权限,因为它再次提示我登录。

在我的清单文件中:

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.BODY_SENSORS" />

我在电话上使用了类似的过程,它可以工作。两个应用程序(移动和穿戴)都在 Google API 控制台中注册,使用相同的 OAuth2 凭据(有问题吗?)。

任何指针表示赞赏。

4

1 回答 1

0

我找到了它没有登录的原因。两个应用程序中的请求代码必须相同 - 在手机和手表上,可能是因为它们在同一个包中并且两个请求都相同。

所以现在我可以登录了。

于 2018-04-19T15:17:45.627 回答