Android API谷歌硬盘“;“连接失败”;

Android API谷歌硬盘“;“连接失败”;,android,google-drive-api,Android,Google Drive Api,我尝试在Android上使用API Google Drive,首先使用演示: 然而,我有一个我无法解决的错误 GoogleAppClient连接失败: ConnectionResult{statusCode=需要在中签名, 分辨率=pendingent{421d40e8:android.os。BinderProxy@42137f78}} 是您收到的错误的信息。我想您是的,但您需要登录才能访问驱动器。当我运行示例应用程序时,一开始它会要求我选择一个帐户。可能您没有与正在使用的设备同步的帐户?有一

我尝试在Android上使用API Google Drive,首先使用演示:

然而,我有一个我无法解决的错误

GoogleAppClient连接失败: ConnectionResult{statusCode=需要在中签名, 分辨率=pendingent{421d40e8:android.os。BinderProxy@42137f78}}


是您收到的错误的信息。我想您是的,但您需要登录才能访问驱动器。当我运行示例应用程序时,一开始它会要求我选择一个帐户。可能您没有与正在使用的设备同步的帐户?有一个选项可以“添加帐户”,但当您没有帐户时,行为可能会有所不同。文档建议您在不使用API的情况下继续操作(因为只有在登录后才能继续),或者调用
startResolutionForResult(Activity,int)
来提示用户登录,但这可能是最简单的方法。

不确定是否有人仍然需要它,但就我而言,我有两个谷歌账户,所以我首先需要选择我想使用的账户。我在
onConnectionFailed

    if (!connectionResult.hasResolution())
    {
        // show the localized error dialog.
        GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), mContext, 0).show();
        return;
    }

    try
    {
        connectionResult.startResolutionForResult(mContext, 1);
    } catch (IntentSender.SendIntentException e)
    {
        e.printStackTrace();
    }

这可能是由于开发人员的疏忽(正如我所经历的那样)-您在控制台上提供的SHA1详细信息是生产密钥的详细信息,并且您正在调试模式下进行测试(SHA1详细信息会有所不同)。不过,google drive API给出的错误消息可能会更好

你可以在这里参考我的答案来连接谷歌账户,这只在签名的apk中才能完美工作

然后你就可以去谷歌硬盘了

   IntentSender intentSender = Drive.DriveApi
            .newOpenFileActivityBuilder()
            .build(mGoogleApiClient);
    try {
        startIntentSenderForResult(intentSender, DRIVE_CHOOSER_REQUEST, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }

奇怪的是,在我的代码中没有任何更改,它在我的索尼平板电脑上工作,但在三星O.oAre上不工作。您是否使用相同的帐户登录了这两台设备?是的,使用相同的帐户它在格式化后在我的三星平板电脑上工作。在我的情况下,此错误是由于应用程序包的某些内容与凭据中的不匹配而导致的。需要确保包名和SHA1必须匹配。在开发人员计算机上运行的调试版本可能与发布版本具有不同的包名和SHA1。
   IntentSender intentSender = Drive.DriveApi
            .newOpenFileActivityBuilder()
            .build(mGoogleApiClient);
    try {
        startIntentSenderForResult(intentSender, DRIVE_CHOOSER_REQUEST, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }