How do I upload file to google drive from android

前端 未结 4 1162
刺人心
刺人心 2021-01-03 07:20

I have spend more then one day but not getting any working solution which provide me uploading / downloading files to Google Drive.

I have tried

4条回答
  •  萌比男神i
    2021-01-03 07:38

    Google SDK is now android friendly. There is a full-access scope which gives you access to listing and reading all the drive files and which can be used in Android apps easily since our newer client library is Android-friendly! I also recommend watching this talk from Google IO which is explains how to integrate mobile apps with Drive

    The library makes authentication easier

     /** Authorizes the installed application to access user's protected data. */
      private static Credential authorize() throws Exception {
        // load client secrets
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
            new InputStreamReader(CalendarSample.class.getResourceAsStream("/client_secrets.json")));
        // set up authorization code flow
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            httpTransport, JSON_FACTORY, clientSecrets,
            Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory)
            .build();
        // authorize
        return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
      } 
    

    The library runs on Google App Engine

    Media Upload

    class CustomProgressListener implements MediaHttpUploaderProgressListener {
      public void progressChanged(MediaHttpUploader uploader) throws IOException {
        switch (uploader.getUploadState()) {
          case INITIATION_STARTED:
            System.out.println("Initiation has started!");
            break;
          case INITIATION_COMPLETE:
            System.out.println("Initiation is complete!");
            break;
          case MEDIA_IN_PROGRESS:
            System.out.println(uploader.getProgress());
            break;
          case MEDIA_COMPLETE:
            System.out.println("Upload is complete!");
        }
      }
    }
    
    File mediaFile = new File("/tmp/driveFile.jpg");
    InputStreamContent mediaContent =
        new InputStreamContent("image/jpeg",
            new BufferedInputStream(new FileInputStream(mediaFile)));
    mediaContent.setLength(mediaFile.length());
    
    Drive.Files.Insert request = drive.files().insert(fileMetadata, mediaContent);
    request.getMediaHttpUploader().setProgressListener(new CustomProgressListener());
    request.execute();
    

    You can also use the resumable media upload feature without the service-specific generated libraries. Here is an example:

    File mediaFile = new File("/tmp/Test.jpg");
    InputStreamContent mediaContent =
        new InputStreamContent("image/jpeg",
            new BufferedInputStream(new FileInputStream(mediaFile)));
    mediaContent.setLength(mediaFile.length());
    
    MediaHttpUploader uploader = new MediaHttpUploader(mediaContent, transport, httpRequestInitializer);
    uploader.setProgressListener(new CustomProgressListener());
    HttpResponse response = uploader.upload(requestUrl);
    if (!response.isSuccessStatusCode()) {
      throw GoogleJsonResponseException(jsonFactory, response);
    }
    

提交回复
热议问题