googleworkspace / android-samples

Android samples for Google Workspace APIs
Apache License 2.0
635 stars 410 forks source link

How to check folder exist in root #76

Closed TejaDroid closed 6 years ago

TejaDroid commented 6 years ago

Hello,

I cant find any where the code of how to check the folder exist or not in GDrive root folder. I tried more then one day but cant find the solution of my question,

So please let me know how to implement that the check folder exist or not in google drive root folder, I want to implement in background programetically without pickup folder.

Thanks Advance.

asrivas commented 6 years ago

Are you trying to search for the folder by title name? Have you tried calling listChildren on the root folder? https://developers.google.com/android/reference/com/google/android/gms/drive/DriveResourceClient.html#listChildren(com.google.android.gms.drive.DriveFolder)

You can then go through the Metadata and look for the title (getTitle()) of the folder you are looking for.

kbboss commented 6 years ago

@TejaDroid I fix it

`private DriveFolder queryFolderTree(DriveFolder parentFolder, int childLevel, List names) throws ExecutionException, InterruptedException { if (childLevel >= names.size()) { return parentFolder; }

    if (parentFolder == null) {
        return null;
    }
    DriveFolder findFolder = queryFolder(parentFolder, names.get(childLevel));
    DriveFolder result = null;
    if (findFolder != null) {
        // exist, find next or creating folder
        result = queryFolderTree(findFolder, ++childLevel, names);
    }
    return result;
}

public DriveFolder queryFolder(DriveFolder parentFolder, String folderTitle) throws ExecutionException, InterruptedException {
    DriveFolder findFolder = null;
    Task<MetadataBuffer> folder = resourceClient.listChildren(parentFolder);
    Tasks.await(folder);
    MetadataBuffer tempBuffer = folder.getResult();
    for (int i = 0; i < tempBuffer.getCount(); i++) {
        Metadata temp = tempBuffer.get(i);
        if (temp.isFolder() && temp.getTitle().equals(folderTitle)) {
            // exist
            findFolder = temp.getDriveId().asDriveFolder();
            break;
        }
    }
    tempBuffer.release();

    return findFolder;
}`