如果已存在则不创建文件夹并返回文件夹ID

时间:2013-11-27 17:36:23

标签: java android google-drive-api

我正在使用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;

    }
}

1 个答案:

答案 0 :(得分:1)

您不需要迭代所有用户的文件。我假设您给该文件夹一个固定的名称。如果是这样,请使用驱动器的搜索功能来查找名称和类型文件夹。单个调用只有一个结果。希望用户没有创建另一个具有相同名称的文件夹。