无法在应用中首次从Google Drive AppFolder检索文件

时间:2018-08-03 05:29:28

标签: android google-drive-api google-drive-android-api google-drive-team-drive

我试图获取存储在Google驱动器的appfolder(应用程序的隐藏数据)中的文件夹/文件。

在此之前,我将文件夹和文件存储在同一应用程序的appfolder中,同时列出了可以正常工作的appfolders文件和文件夹,我可以看到所有文件夹和文件。

然后我卸载应用程序,然后在再次安装并打开时尝试获取文件。 但是这次,我无法获取文件夹和文件。

如果我在同一屏幕上等待大约30分钟左右,然后尝试尝试,则可以看到我的文件夹/文件。

下面是我的代码。

Google api客户端连接

GoogleSignInOptions gso = null;

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).setAccountName(accountNAme)
            .requestEmail()
            .requestScopes(new Scope(Scopes.PROFILE))
            .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
            .requestScopes(new Scope(Scopes.DRIVE_FILE))
            .build();

mGoogleApiClient = new 

GoogleApiClient.Builder(mContext).addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .addConnectionCallbacks(this)
            .enableAutoManage(this,this::onConnectionFailed)
            .addOnConnectionFailedListener(this).build();
mGoogleApiClient.connect();

登录到Google帐户

OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        if (opr.isDone()) {
            Log.e("Tag", "In signed in ");
        } else {
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(GoogleSignInResult googleSignInResult) {
                    Log.e("Tag", "In signed in callback");

                }
            });
        }

然后检索文件夹和文件代码

Drive.getDriveResourceClient(getApplicationContext(), signedInAccountacct).getAppFolder().addOnSuccessListener(new OnSuccessListener<DriveFolder>() {
            @Override
            public void onSuccess(DriveFolder driveFolder) {
                Log.e("First", "On success");

                Task<MetadataBuffer> dat = Drive.getDriveResourceClient(getApplicationContext(), signedInAccountacct).listChildren(driveFolder);


                dat.addOnSuccessListener(new OnSuccessListener<MetadataBuffer>() {
                    @Override
                    public void onSuccess(MetadataBuffer metadata) {
                        Log.e("Second", "On success"+metadata.getCount());

                        for (int i=0; i<metadata.getCount(); i++){
                            Log.e("FileName", metadata.get(i).getTitle());
                            if (metadata.get(i).getTitle().contains("yyyy") {
                                Drive.getDriveResourceClient(getApplicationContext(), signedInAccountacct).listChildren(metadata.get(i).getDriveId().asDriveFolder()).addOnSuccessListener(new OnSuccessListener<MetadataBuffer>() {
                                    @Override
                                    public void onSuccess(MetadataBuffer metadata1) {
                                        for (int j = 0; j < metadata1.getCount(); j++) {

                                            Log.e("FileName In folders : ", metadata1.get(j).getTitle());

                                        }
                                    }
                                });
                            }

                        }
                    }
                });
            }
        });

请提出建议,这段代码在哪里出问题。

提前谢谢您。

0 个答案:

没有答案