Java GoogleAppClient onConnected回调不';我打错电话了

Java GoogleAppClient onConnected回调不';我打错电话了,java,android,google-drive-api,google-drive-android-api,Java,Android,Google Drive Api,Google Drive Android Api,我正在尝试使用DriveApi为用户创建一些文件夹并上载包含一些数据的文本文件 我尝试从()实现快速入门指南,但它有几个基本问题: api在恢复时连接到onResume,因此用户在打开应用程序后会被提示立即授予访问该应用程序的权限,这既令人困惑又令人恐惧 如果您拒绝或按下同意屏幕上的后退按钮,将再次调用onResume方法,并再次显示同意屏幕,从而导致无限循环 我更希望在用户实际需要存储数据时连接api,这样对用户更有意义。我试着这样做: ResultCallback<DriveFolde

我正在尝试使用DriveApi为用户创建一些文件夹并上载包含一些数据的文本文件

我尝试从()实现快速入门指南,但它有几个基本问题:

  • api在恢复时连接到
    onResume
    ,因此用户在打开应用程序后会被提示立即授予访问该应用程序的权限,这既令人困惑又令人恐惧
  • 如果您拒绝或按下同意屏幕上的后退按钮,将再次调用
    onResume
    方法,并再次显示同意屏幕,从而导致无限循环
  • 我更希望在用户实际需要存储数据时连接api,这样对用户更有意义。我试着这样做:

    ResultCallback<DriveFolder.DriveFolderResult> folderCreatedCallback = new
            ResultCallback<DriveFolder.DriveFolderResult>() {
                @Override
                public void onResult(@NonNull DriveFolder.DriveFolderResult result) {
                    clearCurrentAction();
    
                    if (!result.getStatus().isSuccess()) {
                        Log.e(TAG, "Error while trying to create the folder");
                        return;
                    }
                    Log.d(TAG, "Created a folder: " + result.getDriveFolder().getDriveId());
                }
            };
    
    public DriveApiHelper(GoogleApiClient mGoogleApiClient) {
        this.mGoogleApiClient = mGoogleApiClient;
    }
    
    public void createBackupsFolder() {
        currentAction = DriveActions.CREATING_FOLDER;
    
        if (mGoogleApiClient.isConnected()) {
            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setTitle("test").build();
            Drive.DriveApi.getRootFolder(mGoogleApiClient).createFolder(
                    mGoogleApiClient, changeSet).setResultCallback(folderCreatedCallback);
        } else {
            mGoogleApiClient.connect();
        }
    }
    
    我希望在api被要求连接时保留一个用户尝试执行的操作的参考,在api成功连接后,我可以继续该操作。这是最符合我需要的实现,但在从同意屏幕实际单击“允许”按钮后,没有调用任何api回调(
    onConnected
    onConnectionFailed


    实际上,我需要再次调用connect方法才能连接,并启动
    onConnected
    成功恢复用户的操作。

    结果表明,我忘记了覆盖
    onActivityResult
    (文档中当时没有提到,我不知道他们现在是否包括它)

    只需添加:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_CODE_RESOLUTION) {
                mGoogleApiClient.connect();
            }
        } else {
            if (requestCode == REQUEST_CODE_RESOLUTION) {
                mDriveHelper.dismissStatusDialog();
            }
        }
    }
    

    你找到解决方案了吗?@SimpleCoder,我记得我没有覆盖activityresult的
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_CODE_RESOLUTION) {
                mGoogleApiClient.connect();
            }
        } else {
            if (requestCode == REQUEST_CODE_RESOLUTION) {
                mDriveHelper.dismissStatusDialog();
            }
        }
    }