android - 如何禁用 Google Fit 并撤销应用本身的权限

标签 android google-fit

我设置了连接到 Google Fit 的应用程序,读取和写入一些关于用户 body 的数据。当用户在应用程序设置中禁用 Google Fit 时,我尝试通过调用来撤销我的应用程序权限:

public void disableGoogleFit(){
    if(!mClient.isConnected()){
        Log.e(TAG, "Google Fit wasn't connected");
        return;
    }
    PendingResult<Status> pendingResult = Fitness.ConfigApi.disableFit(mClient);

    pendingResult.setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
            if(status.isSuccess()) {
                Log.i(TAG, "Google Fit disabled");
            }else{
                Log.e(TAG, "Google Fit wasn't disabled " + status);
            }
        }
    });
}

即使我可以成功读取/写入数据,禁用 Fit 也会返回错误:

Google Fit wasn't disabled Status
{statusCode=unknown status code: 5010, resolution=null}

Edit1: 添加了整个方法,其中可见,客户端在我尝试禁用 Fit 时已连接。

最佳答案

目前使用 15.0.1 lib 可以轻松完成:

fun disconnect(context: Context) {
    val fitnessOptions = FitnessOptions.builder()
            .addDataType(DataType.TYPE_WORKOUT_EXERCISE, FitnessOptions.ACCESS_READ)
            .build()
    val signInOptions = GoogleSignInOptions.Builder().addExtension(fitnessOptions).build()
    val client = GoogleSignIn.getClient(context, signInOptions)
    client.revokeAccess()
}

关于android - 如何禁用 Google Fit 并撤销应用本身的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130853/

相关文章:

java - 是否可以使用 Google Fit REST API 在同一网络应用程序中聚合多个用户的健身数据?

javascript - React Native 中的绝对定位

java - 检测 Android 应用程序是否在 'BlueStacks' 中运行的可靠方法

android - 无法使用 FileProvider 在 Android N 中打开外部存储文件

java - 谷歌健身 : What is DataType Floor of Google Fit.

android - 创建类似于 Google Fit 的圆环图

java - Android RadioButtons 看起来太亮

android - 为什么屏幕分辨率与屏幕尺寸比不一样?

android - Google Fit API Sleep 在 session 中插入并读取 DataPoint