Android Drive API startResolutionForResult返回RESULT_CANCELLED

时间:2016-07-14 09:56:42

标签: android drive

我正在尝试将Google云端硬盘应用到我的Android应用中,我甚至无法连接到Api客户端。我不知道为什么:

  1. 我在开发人员控制台中为〜/ .android / debug.keystore配置了项目和凭据(值似乎是正确的)
  2. 我有来自Drive for Android Documentation的复制粘贴代码 - >在方法onConnectionFailed()中,如果connectionResult.startResolutionForResult()
  3. ,我正在调用connectionResult.hasResolution()
  4. onActivityResult中匹配requestCode即使我选择了我的帐户,我也收到resultCode == 0(RESULT_CANCELLED)
  5. 你知道为什么吗?我还尝试添加:

    <meta-data
        android:name="com.google.android.apps.drive.APP_ID"
        android:value="----"/>
    

    进入Manifest,文档页面上没有提到,但有些SO帖子。

    感谢您的帮助

    修改

    我还尝试使用enableAutoManage

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .build();
    

    而不是manualy配置连接和connectionFailed回调:

            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
    

    它在onConnectionFailed方法中返回错误代码13。基于documentation,似乎在以下时间返回:

      

    传递给OnConnectionFailedListener   enableAutoManage(FragmentActivity,   GoogleApiClient.OnConnectionFailedListener)当用户没有选择时   完成提供的决议。例如,通过取消对话框。

    但我没有取消它。

    我在Nexus 5x上测试它 - Android N

2 个答案:

答案 0 :(得分:8)

在阅读有关钱包api的内容时,我发现了问题所在。

我只需要创建OAuth客户端ID而不是API密钥

  1. 转到Developer Console > Credentials
  2. 点击“创建凭据”&gt; OAuth客户端ID&gt;的Android
  3. 填写详细信息
  4. 创建
  5. 打开OAuth许可屏幕(在凭据页面上)
  6. 填写电子邮件和产品名称
  7. 保存
  8. 现在有效!

答案 1 :(得分:0)

仅限于案例

如果您错过了客户ID创建过程,@ pizGhar解决方案是正确的。但我得到resultCode = 0,我的OAuth客户端ID一切正常。最后我解决了它,所以我按照文档创建了SHA1,但是我在调​​试模式下运行我的应用程序(Build variant)并且总是有resultCode = 0。只是切换到发布模式,问题就消失了,现在resultCode = -1正如预期的那样。