Android Google Drive API getRequest.getMediaHttpDownloader()始终为空。为什么?

Android Google Drive API getRequest.getMediaHttpDownloader()始终为空。为什么?,android,google-drive-api,Android,Google Drive Api,下载驱动器文件时,我试图使用MediaHttpDownloaderProgressListener更新progressBar,但以下代码返回NullPointer异常: class CustomProgressListener implements MediaHttpDownloaderProgressListener { public void progressChanged(MediaHttpDownloader downloader) { switch (downl

下载驱动器文件时,我试图使用MediaHttpDownloaderProgressListener更新progressBar,但以下代码返回NullPointer异常:

  class CustomProgressListener implements MediaHttpDownloaderProgressListener {
    public void progressChanged(MediaHttpDownloader downloader) {
      switch (downloader.getDownloadState()) {
        case MEDIA_IN_PROGRESS:
          System.out.println(downloader.getProgress());
          break;
        case MEDIA_COMPLETE:
          System.out.println("Download is complete!");
      }
    }
  }

  OutputStream out = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+"/tmp/driveFile.jpg");

  DriveFiles.Get request = drive.files().get(fileId);
  request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener());
  request.download(out);
例外情况总是在这一行:

request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener());
因为“request.getMediaHttpDownloader()”为空,但请求是正常的(我测试了它)


您能帮我吗?

使用以下代码解决:

private static void downloadFile(boolean useDirectDownload, File uploadedFile)
      throws IOException {
    // create parent directory (if necessary)
    java.io.File parentDir = new java.io.File(DIR_FOR_DOWNLOADS);
    if (!parentDir.exists() && !parentDir.mkdirs()) {
      throw new IOException("Unable to create parent directory");
    }
    OutputStream out = new FileOutputStream(new java.io.File(parentDir, uploadedFile.getTitle()));

    MediaHttpDownloader downloader =
        new MediaHttpDownloader(httpTransport, drive.getRequestFactory().getInitializer());
    downloader.setDirectDownloadEnabled(useDirectDownload);
    downloader.setProgressListener(new FileDownloadProgressListener());
    downloader.download(new GenericUrl(uploadedFile.getDownloadUrl()), out);
  }

Hello@Meroelyth,我试图找出两者之间的区别:对我来说,http客户端似乎可以用于非谷歌下载。上面的示例支持下载Chuck,它是api客户端库的一部分,而不是http。所以我有点困惑。提前谢谢!