谷歌驱动器,Java的API-回报,已删除文件

时间:2016-04-16 13:31:39

标签: google-drive-api

我试图在编辑驱动器文件时获取推送通知。 在我尝试从Google云端硬盘UI中删除这些文件夹之前一切正常。他们从用户界面中消失了,但我的服务仍然像他们在场一样接收它们。

 try {
        configdata = dao.getConfigByChannelId(channelId,IntegrationType.DRIVE);
        System.out.println("ACCESS TOKEN FOR CHANNEL ID: " + configdata.getAccessToken());
        GoogleCredential credential = new GoogleCredential().setAccessToken(configdata.getAccessToken());

        Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
                .setApplicationName("Akoonu")
                .setHttpRequestInitializer(credential).build();
        Files.List files = service.files().list();

        try { 
            Change change = service.changes().get(String.valueOf((Integer.parseInt(changeId) - 1))).execute();


            System.out.println("Changed file ID: " + change.getFileId());
            System.out.println("Check delete case: " + change.getDeleted());


            if (change.getDeleted()) {
                System.out.println("File has been deleted");
                File changedFile = change.getFile();

                strpath.replace(changedFile.getTitle(), "");
                String path = strpath.replace(changedFile.getTitle(), "");
                //deleteItem = iao.getIventoryItemByFilePathAndConfigId(changedFile.getTitle(), path, configdata.getId(), configdata.getAccountId());
                deleteItem = iao.getIventoryItemByExternalId(changedFile.getId(), configdata.getId(), configdata.getAccountId());
                itemService.deleteInventoryItem(deleteItem.getId(), deleteItem.getAccountId());
                //deleteFilePathList.add(metadata.getPathDisplay().substring(1));

            } else {
                File changedFile = change.getFile();
                System.out.println("Changed file Title: " + changedFile.getTitle());


          .
          .
          .
          .
          .

我已经尝试了很多样本​​,但仍未修复.Plz帮帮我。谢谢

2 个答案:

答案 0 :(得分:1)

我在项目中也遇到了这类问题,但经过很长一段时间我得到了解决方案。

请在代码中使用查询字符串参数,如

Files.List request = service.files().list().setQ("trashed=false");
 ..

肯定会解决这个问题。

感谢。

答案 1 :(得分:0)

在v3中,有一个“ explicitlyTrashed”被破坏的标志,这就是为我解决(暂时)的问题

https://developers.google.com/drive/api/v3/reference/files