【问题标题】:GDAA(Google Drive Android API): download file from AppDataFolder by using fileIdGDAA(Google Drive Android API):使用 fileId 从 AppDataFolder 下载文件
【发布时间】:2018-02-17 05:17:40
【问题描述】:

我在我的应用程序中使用谷歌驱动器。我能够在Google drive App folder 中上传数据并获取文件ID。我的问题是,如何使用FileIdappDataFolder 下载它 这就是我获取文件ID的方式

     private List<String> getDataFromApi() throws IOException {

        List<String> fileInfo = new ArrayList<String>();
        FileList lst = mService.files().list()
                .setSpaces("appDataFolder")
                .execute();

        FileList result = mService.files().list()
                .setSpaces("appDataFolder")
                .setFields("nextPageToken, files(id, name, mimeType)")
                .execute();
        List<File> files = result.getFiles();
        if (files != null) {
            for (File file : files) {
                fileInfo.add(String.format("%s (%s) %s\n",
                        file.getName(), file.getId(), file.getMimeType()));
            }
        }
        return fileInfo;
    }

我正在使用 v3 的 Google Drive 服务。

compile('com.google.apis:google-api-services-drive:v3-rev102-1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

提前致谢

【问题讨论】:

    标签: android google-drive-api google-drive-android-api drive


    【解决方案1】:

    我终于得到了我的答案。希望这也有助于其他人从 appDataFolder 下载。在这里,我将文件下载并保存到SD card 文件夹名称Spectors 中。并传递com.google.api.services.api.drive.model.File 的文件类型的值。

           private void downloadFile(boolean useDirectDownload, File uploadedFile)
                throws IOException {
    
    
            java.io.File direct = new java.io.File(Environment.getExternalStorageDirectory()
                    + "/Spectors");
            if (!direct.exists()) {
                direct.mkdirs();
            }
    
            java.io.File parentDir = new java.io.File(direct.getAbsolutePath());
            if (!parentDir.exists() && !parentDir.mkdirs()) {
                throw new IOException("Unable to create parent directory");
            }
            OutputStream out = new FileOutputStream(new java.io.File(parentDir, uploadedFile.getName()+".zip"));
            com.google.api.services.drive.Drive.Files.Get files = mService.files().get(uploadedFile.getId());
            files.executeMediaAndDownloadTo(out);
    
            Log.e(TAG, "downloadFile:2 " + files.toString() + "\n"+uploadedFile.getFileExtension() );
    }
    

    【讨论】:

      【解决方案2】:

      您也可以应用以下方法从应用文件夹下载内容

      通过以下代码从app文件夹中获取文件

      private void listFiles() {
          Query query =
                  new Query.Builder()
                          .addFilter(Filters.or(Filters.eq(SearchableField.MIME_TYPE, "text/html"),
                                  Filters.eq(SearchableField.MIME_TYPE, "text/plain")))
                          .build();
          getDriveResourceClient()
                  .query(query)
      
                  .addOnSuccessListener(this,
      
                          new OnSuccessListener<MetadataBuffer>() {
                              @Override
                              public void onSuccess(MetadataBuffer metadataBuffer) {
                                  //mResultsAdapter.append(metadataBuffer);
      
                                  for (int i = 0; i <metadataBuffer.getCount() ; i++) {
                                      retrieveContents(metadataBuffer.get(i).getDriveId().asDriveFile());
                                  }
                              }
                          }
      
                  )
                  .addOnFailureListener(this, new OnFailureListener() {
                      @Override
                      public void onFailure(@NonNull Exception e) {
                          Log.e(TAG, "Error retrieving files", e);
                          MainActivity.this.finish();
                      }
                  });
      
      }
      

      通过以下代码下载内容

       private void retrieveContents(DriveFile file) {
              // [START drive_android_open_file]
              Task<DriveContents> openFileTask =
                      getDriveResourceClient().openFile(file, DriveFile.MODE_READ_ONLY);
              // [END drive_android_open_file]
              // [START drive_android_read_contents]
              openFileTask
                      .continueWithTask(task -> {
                          DriveContents contents = task.getResult();
                          // Process contents...
                          // [START_EXCLUDE]
                          // [START drive_android_read_as_string]
                          try (BufferedReader reader = new BufferedReader(
                                       new InputStreamReader(contents.getInputStream()))) {
                              StringBuilder builder = new StringBuilder();
                              String line;
                              while ((line = reader.readLine()) != null) {
                                  builder.append(line).append("\n");
                              }
                              showMessage(getString(R.string.content_loaded));
                              mFileContents.setText(builder.toString());
                          }
                          // [END drive_android_read_as_string]
                          // [END_EXCLUDE]
                          // [START drive_android_discard_contents]
                          Task<Void> discardTask = getDriveResourceClient().discardContents(contents);
                          // [END drive_android_discard_contents]
                          return discardTask;
                      })
                      .addOnFailureListener(e -> {
                          // Handle failure
                          // [START_EXCLUDE]
                          Log.e(TAG, "Unable to read contents", e);
                          showMessage(getString(R.string.read_failed));
                          finish();
                          // [END_EXCLUDE]
                      });
              // [END drive_android_read_contents]
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 2017-02-17
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 2015-02-06
        相关资源
        最近更新 更多