这是尝试实施新Google Drive Android API (GDAA)时的又一个陷阱: 我的应用的活动需要GDAA不支持的功能,因此我根据Google Drive SDK v2语句使用原始here:
在某些情况下,应用可能需要使用Google云端硬盘 服务以访问其他功能或访问更广泛的范围 Google Drive Android API中提供了哪些内容。在这些情况下, 您的应用程序必须使用Google API Client Library for Java。
auth序列是标准的:
...
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE_FILE);
credential.setSelectedAccountName(accountName);
...
DRIVE_FILE范围的身份验证/授权是成功的。
在活动B 中,我使用GDAA,完成标准序列
这就是出现问题的地方。用户已经在活动A中进行了帐户选择和授权,但GDAA对此一无所知。这会导致再次弹出新的帐户选择对话框。所以问题是:
有没有办法将初始化的凭证传递给GDAA而不会再次窃听用户(范围相同)?
如果应用程序需要同时使用Google Drive SDK v2和GDAA(可能是任何情况,但最重要的应用程序),不止一次显示帐户选择对话框肯定会是一个显示器。
答案 0 :(得分:4)
构建新的GoogleApiClient时,您可以明确设置帐户名称。
x = new GoogleApiClient.Builder(this)
.addScope(Drive.SCOPE_FILE)
.setAccountName(accountName)...
由于该应用程序已获得该帐户的授权,因此它将自动连接。