我试图获取存储在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());
}
}
});
}
}
}
});
}
});
请提出建议,这段代码在哪里出问题。
提前谢谢您。