我正在使用Google Drive API。当我的应用第一次运行时,用户对我的应用进行身份验证,然后在Google云端硬盘的根目录中创建一个文件夹,让文件夹名称为“我的文件夹”。该应用程序正常工作,直到用户将应用程序与Android中的“Google设置”应用程序断开连接断开连接后,用户再次打开应用程序并再次授权应用程序,并再次使用不同的ID创建具有类似名称“我的文件夹”的另一个文件夹。我不想再创建该文件夹,如果它存在并想要获取它的id而不请求根文件夹中的所有文件并迭代列表
@Override
protected void onActivityResult(final int requestCode,
final int resultCode, final Intent data) {
switch (requestCode) {
case REQUEST_ACCOUNT_PICKER:
if (resultCode == RESULT_OK && data != null
&& data.getExtras() != null) {
String accountName = data
.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
credential.setSelectedAccountName(accountName);
service = getDriveService(credential);
SharedPreferences preferences = getSharedPreferences(
"pref", MODE_PRIVATE);
preferences.edit().putString("accountName", accountName)
.commit();
}
}
break;
case REQUEST_AUTHORIZATION:
if (resultCode == Activity.RESULT_OK) {
new Thread(new Runnable() {
@Override
public void run() {
File body = new File();
body.setTitle("My Folder");
body.setMimeType("application/vnd.google-apps.folder");
try {
File file = service.files().insert(body).execute();
String id = file.getId();
MyUtilities.saveInSharedPreference("drivefolderid",
id, ImportWizard.this);
Log.v("folder id ", "==>>" + id);
} catch (UserRecoverableAuthIOException e) {
e.printStackTrace();
startActivityForResult(e.getIntent(),
REQUEST_AUTHORIZATION);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
} else {
startActivityForResult(credential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
}
break;
}
}
答案 0 :(得分:1)
您不需要迭代所有用户的文件。我假设您给该文件夹一个固定的名称。如果是这样,请使用驱动器的搜索功能来查找名称和类型文件夹。单个调用只有一个结果。希望用户没有创建另一个具有相同名称的文件夹。