Search code examples
androidandroid-studiogoogle-drive-apigoogle-drive-android-api

How to Check if the folder is present in trash or not in google drive?


Hi I have been creating an app which uploads folders and files in gdrive but I am facing an issue where when the folder is present in bin then also the file is stored in that folder what i want to avoid is that to check whether the folder is there in bin or not if yes then delete it from there.

    public Task<GoogleDriveFileHolder> createFolderIfNotExist(final String folderName, @javax.annotation.Nullable final String parentFolderId) {
        return Tasks.call(mExecutor, new Callable<GoogleDriveFileHolder>() {
            @Override
            public GoogleDriveFileHolder call() throws Exception {
                GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
                FileList result = mDriveService.files().list()
                        .setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = '" + false + "' ")
                        .setSpaces("drive")
                        .execute();


                if (result.getFiles().size() > 0) {
                    googleDriveFileHolder.setId(result.getFiles().get(0).getId());
                    googleDriveFileHolder.setName(result.getFiles().get(0).getName());
//                googleDriveFileHolder.setModifiedTime(result.getFiles().get(0).getCreatedTime().getValue());
//                googleDriveFileHolder.setSize(result.getFiles().get(0).getSize());

                    googleDriveFileHolder.setId(result.getFiles().get(0).getId());
                    return googleDriveFileHolder;

                } else {

                    List<String> root;
                    if (parentFolderId == null) {
                        root = Collections.singletonList("root");
                    } else {

                        root = Collections.singletonList(parentFolderId);
                    }
                    File metadata = new File()
                            .setParents(root)
                            .setMimeType(DriveFolder.MIME_TYPE)
                            .setName(folderName);

                    File googleFile = mDriveService.files().create(metadata).execute();
                    if (googleFile == null) {
                        throw new IOException("Null result when requesting file creation.");
                    }
                    googleDriveFileHolder.setId(googleFile.getId());
                    return googleDriveFileHolder;
                }
            }
        });
    }

This is what i was doing but got error now while i added isTrashed in ".setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = '" + false + "' ")"


Solution

  • I think the problem is the single quotes with which you're surrounding false. You want to provide a boolean, not a string.

    Therefore, your issue might be fixed by changing your query from:

    .setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = '" + false + "' ")
    

    To:

    .setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = false")
    

    Reference: