2016-04-16 61 views
1

我试图在我编辑该驱动器文件时获取推送通知。 一切都很好,直到我试图从谷歌驱动器用户界面中删除这些文件夹。他们从用户界面中消失,但我的服务仍然收到它们,就好像它们在场。Google-drive-java-api-returns-deleted-files

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()); 


      . 
      . 
      . 
      . 
      . 

我已经试过很多样,但仍然没有fixed.Plz帮助me.Thanks

回答

1

我也面临这类问题在我的项目,但很长一段时间后,我得到了一个解决方案。

请使用查询字符串参数在你的代码一样

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

那肯定会解决这个问题。

THanks。