Google 드라이브 API를 Android 앱에 통합하여 App Storage 폴더에 JSON 파일을 저장합니다.Google 드라이브 API Android 계정 선택기는 일부 계정에서 항상 RESULT_CANCELED를 반환합니다.
이렇게하려면 내 MainActivity 내의 조각에 Google 드라이브 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를 반환합니다.
다른 사람의 계정을 사용하면 계정 선택 도구가 사라지고 내 오류가 발생합니다. 내가 debug 경우 resultCode 실제 RESULT_CANCELED 것을 참조하십시오.
차이점이 무엇인지 알 수 없습니다. 내 코드는 꽤 표준적인 것처럼 보입니다.
아이디어가 있으십니까?
Google 계정 (예 : Gmail 또는 Google 앱 도메인)을 사용하고 있습니까? Google 앱 도메인을 사용하는 경우 해당 사용자가 드라이브를 사용하도록 설정되어 있는지 확인할 수 있습니까? – Shailendra
Google 드라이브를 이미 사용하고 있는지 확인한다는 의미입니까? 그것은 내가 실패한 두 가지 경우 모두에서 마찬가지입니다. –