Google Fit集成在Android应用程序登录中部分工作

Google Fit集成在Android应用程序登录中部分工作,android,google-fit,google-fit-sdk,Android,Google Fit,Google Fit Sdk,我正在开发一个链接到GoogleFit(上传数据和下载其他数据)的应用程序。在应用程序中的某一点上,会提示用户连接到Google Fit。这是通过下面显示的代码完成的。对于这个应用的某些风格,我们看到了一个奇怪的bug。Google Fit登录屏幕将出现,但当用户选择帐户时,它不会提示用户提供更多信息,也不会将用户连接到Google Fit。试图确定这是否是我的应用程序中的某个错误,或者这是一个新的错误。是否有其他人遇到此问题并/或解决了此问题 GoogleSignIn.requestPermi

我正在开发一个链接到GoogleFit(上传数据和下载其他数据)的应用程序。在应用程序中的某一点上,会提示用户连接到Google Fit。这是通过下面显示的代码完成的。对于这个应用的某些风格,我们看到了一个奇怪的bug。Google Fit登录屏幕将出现,但当用户选择帐户时,它不会提示用户提供更多信息,也不会将用户连接到Google Fit。试图确定这是否是我的应用程序中的某个错误,或者这是一个新的错误。是否有其他人遇到此问题并/或解决了此问题

GoogleSignIn.requestPermissions(
                            this,
                            GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
                            getLastSignedInAccount(getActivityBase()),
                            fitnessOptions);
在查看日志时,我注意到当它工作时,它们都被称为:

ActivityManager: START u0 {act=null typ=null flg=0x0 cmp=ComponentInfo{com.google.android.gms/com.google.android.gms.common.api.GoogleApiActivity}} ActivityManager: START u0 {act=null typ=null flg=0x0 cmp=ComponentInfo{com.google.android.gms/com.google.android.gms.signin.activity.ConsentActivity}} 

但当它不起作用时,活动就永远不会启动。谷歌似乎有责任解除这一意图,但没有任何日志记录说明为什么不解除这一意图。

我使用以下代码帮助解码错误:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(GOOGLE_TAG, "onActivityResult requestCode=" + requestCode + " and resultCode=" + resultCode);

    int unmaskedRequestCode = requestCode & 0xFFFF;

    if (unmaskedRequestCode == googleFitConnect.GOOGLE_FIT_PERMISSIONS_REQUEST_CODE && resultCode != RESULT_OK) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(intent);
        int status = result.getStatus().getStatusCode();
        Log.d(TAG, "GoogleSignInResult status code string is: " + GoogleSignInStatusCodes.getStatusCodeString(status));
        Log.d(TAG, "GoogleSignInResult status code is: " + status);
    }

    if (resultCode == RESULT_OK) {
        if (unmaskedRequestCode == googleFitConnect.GOOGLE_FIT_PERMISSIONS_REQUEST_CODE) {
            Log.d(GOOGLE_TAG, "request code is google fit code");
            //connect to Google Fit
        } else {
            Log.d(GOOGLE_TAG, "request code is NOT google fit code");
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}
对于某些口味/环境,我得到了一个错误代码10,这意味着开发者错误()。结果表明,在GoogleAPI控制台中输入的包名有拼写错误

对于其他风格/环境,我得到了一个错误代码12500,这意味着登录失败()。文档没有帮助缩小范围。在GoogleAPI控制台中,我完成了同意屏幕并点击Save。一旦我按下“保存”按钮,这些环境就不再失败。似乎在添加新的OAuth 2.0凭据时,现在需要完成同意屏幕。这在他们的文档中有所说明,但是,我想指出的是,其中一种口味在整个过程中都表现良好。在Google更改所有这些之前,该flavor的OAuth凭证已经添加,因此,如果同意屏幕尚未完成(因此使用Google的默认同意屏幕),它似乎已经被加了名,仍然可以工作