我正在將Google Drive API集成到我的Android應用中,以將JSON文件存儲在App Storage文件夾中。Google Drive API Android帳戶選擇器始終會爲某些帳戶返回RESULT_CANCELED
爲此,我在MainActivity中的片段中實施了Google Drive API。
當我執行此代碼時,它按照預期的方式使用SIGN_IN_REQUIRED代碼擊中onConnectionFailed方法。我執行startResolutionForResult並出現帳戶選取器。
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(TAG, "GoogleApiClient connection failed: " + connectionResult.toString());
if (connectionResult.hasResolution()) {
if(!mConnectionResolutionInProgress)
{
try {
mConnectionResolutionInProgress = true;
connectionResult.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLUTION);
} catch (IntentSender.SendIntentException e) {
// Unable to resolve, message user appropriately
showMessage("There was an issue connecting to Google Drive services.");
}
}
else
{
mConnectionResolutionInProgress = false;
showMessage("Canceling export/import action");
}
}
else
{
mConnectionResolutionInProgress = false;
GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), getActivity(), 0).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_CODE_RESOLUTION)
{
mConnectionResolutionInProgress = false;
if(resultCode == Activity.RESULT_OK)
{
if(!mGoogleApiClient.isConnected() && !mGoogleApiClient.isConnecting())
{
ConnectToGoogleDrive();
}
}
}
}
private void ConnectToGoogleDrive()
{
if(mGoogleApiClient == null)
{
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addScope(Drive.SCOPE_APPFOLDER)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
mGoogleApiClient.connect();
}
奇怪的是我的個人帳戶(和我的工作帳戶)它工作得很好。我點擊我的帳戶,然後對話框消失,並用權限對話框取代。如果我接受,那麼操作將繼續完美。 onActivityResult返回resultCode RESULT_OK。
如果我使用任何其他人的帳戶,帳戶選取器消失,我打我的一個錯誤情況。如果我調試我看到resultCode是真正的RESULT_CANCELED。
我看不出有什麼區別。它看起來像我的代碼是非常標準的。
任何想法?
您使用的是谷歌帳戶(即Gmail或谷歌應用程序域)?如果您使用的是谷歌應用程序域,您是否可以驗證是否爲該用戶啓用了雲端硬盤? – Shailendra
通過驗證你的意思是確保他們已經在使用Google Drive?在兩種情況下,我都測試過失敗。 –