2016-06-17 17 views
10

Ich wollte Datei von Google Drive herunterladen. Dafür habe ich in Google Drive SDk implementiert und die folgende Methode verwendet.So laden Sie Google Drive-Datei in Android

Ich habe auch versucht, Ausgabestrom, aber nicht in der Lage, Daten in eine Datei zu speichern.

Ich habe versucht, um dieses zu suchen, aber konnte keinen nützlichen Link finden, der mich leiten kann, wie man Datei herunterlädt und speichert.

+3

Haben Sie https://developers.google.com/drive/android/files gesehen? – Shailendra

Antwort

8

IMO, sollten Sie einige nützliche Links unten lesen:

Google Drive APIs Android - Guides - Working with File Contents

Google Drive Android API Demos at GitHub

Dann finden Sie in den folgenden Schnipsel, natürlich, wenn der Eingangsstrom bekommen, Sie Sie können es in einer Datei auf Ihrem Gerät speichern, anstatt es in Logcat zu drucken.

public class GoogleDriveActivity extends AppCompatActivity 
     implements GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener {   
    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     mProgressBar = (ProgressBar) findViewById(R.id.progressBar); 
     mProgressBar.setMax(100); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (mGoogleApiClient == null) { 
      mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .addApi(Drive.API) 
        .addScope(Drive.SCOPE_FILE) 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
     } 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onPause() { 
     if (mGoogleApiClient != null) { 
      mGoogleApiClient.disconnect(); 
     } 
     super.onPause(); 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
     if (requestCode == RC_OPENER && resultCode == RESULT_OK) { 
      mSelectedFileDriveId = data.getParcelableExtra(
        OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 
     } 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult result) { 
     // Called whenever the API client fails to connect. 
     // Do something... 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) {   
     // If there is a selected file, open its contents. 
     if (mSelectedFileDriveId != null) { 
      open(); 
      return; 
     } 

     // Let the user pick a file... 
     IntentSender intentSender = Drive.DriveApi 
       .newOpenFileActivityBuilder() 
       .setMimeType(new String[]{"video/mp4", "image/jpeg", "text/plain"}) 
       .build(mGoogleApiClient); 
     try { 
      startIntentSenderForResult(intentSender, RC_OPENER, null, 0, 0, 0); 
     } catch (IntentSender.SendIntentException e) { 
      Log.e(TAG, "Unable to send intent", e); 
     } 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
    } 

    private void open() {   
     mProgressBar.setProgress(0); 
     DriveFile.DownloadProgressListener listener = new DriveFile.DownloadProgressListener() { 
      @Override 
      public void onProgress(long bytesDownloaded, long bytesExpected) { 
       // Update progress dialog with the latest progress. 
       int progress = (int) (bytesDownloaded * 100/bytesExpected); 
       Log.d(TAG, String.format("Loading progress: %d percent", progress)); 
       mProgressBar.setProgress(progress); 
      } 
     }; 
     DriveFile driveFile = mSelectedFileDriveId.asDriveFile(); 
     driveFile.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, listener) 
       .setResultCallback(driveContentsCallback); 
     mSelectedFileDriveId = null; 
    } 

    private final ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback = 
      new ResultCallback<DriveApi.DriveContentsResult>() { 
       @Override 
       public void onResult(@NonNull DriveApi.DriveContentsResult result) { 
        if (!result.getStatus().isSuccess()) { 
         Log.w(TAG, "Error while opening the file contents"); 
         return; 
        } 
        Log.i(TAG, "File contents opened"); 

        // Read from the input stream an print to LOGCAT 
        DriveContents driveContents = result.getDriveContents(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(driveContents.getInputStream())); 
        StringBuilder builder = new StringBuilder(); 
        String line; 
        try { 
         while ((line = reader.readLine()) != null) { 
          builder.append(line); 
         } 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        String contentsAsString = builder.toString(); 
        Log.i(TAG, contentsAsString); 

        // Close file contents 
        driveContents.discard(mGoogleApiClient); 
       } 
      }; 
} 

Hoffe es hilft!

+3

Fehler beim Öffnen des Dateiinhalts –

+1

Veröffentlichen Sie den Screenshot oder logcat mit dieser Fehlermeldung, mein Code wurde mit einer TXT-Datei und einer JPG-Datei in meinem Google Drive getestet – BNK

+1

06-26 11: 20: 39.815 24640-24640/com.google.android.gms.drive.sample.demo I/Zeitleiste: Zeitleiste: Activity_idle-ID: [email protected] Zeit: 412814845 06-26 11: 20: 45.585 24640-24640/com.google.android .gms.drive.sample.demo I/Zeitleiste: Zeitleiste: Activity_idle ID: [email protected] Zeit: 412820613 06-26 11: 20: 48.475 24640-24640/com.google.android.gms.drive. sample.demo D/retrieve_contents: Ladevorgang: 0 Prozent 06-26 11: 20: 49.495 24640-24640/com.google.android.gms.drive.sample.demo W/retrieve_contents: Fehler beim Öffnen des Dateiinhalts –