2017-05-16 1 views
0

Ich weiß aus der sample code, wie Sie eine Textdatei in den Drive AppFolder hochladen, aber aus der Dokumentation ist nicht klar, wie es zu JSON zu erweitern, wenn es möglich ist alle. HierJSON-Datei auf Google Drive mit Google Drive API für Android programmatisch hochladen

ist der Code für das Hochladen einer Textdatei:

final private ResultCallback<DriveContentsResult> driveContentsCallback = new 
     ResultCallback<DriveContentsResult>() { 
    @Override 
    public void onResult(DriveContentsResult result) { 
     if (!result.getStatus().isSuccess()) { 
      showMessage("Error while trying to create new file contents"); 
      return; 
     } 
     final DriveContents driveContents = result.getDriveContents(); 

     // Perform I/O off the UI thread. 
     new Thread() { 
      @Override 
      public void run() { 
       // write content to DriveContents 
       OutputStream outputStream = driveContents.getOutputStream(); 
       Writer writer = new OutputStreamWriter(outputStream); 
       try { 
        writer.write("Hello World!"); 
        writer.close(); 
       } catch (IOException e) { 
        Log.e(TAG, e.getMessage()); 
       } 

       MetadataChangeSet changeSet = new MetadataChangeSet.Builder() 
         .setTitle("New file") 
         .setMimeType("text/plain") 
         .setStarred(true).build(); 

       // create a file on root folder 
       Drive.DriveApi.getRootFolder(getGoogleApiClient()) 
         .createFile(getGoogleApiClient(), changeSet, driveContents) 
         .setResultCallback(fileCallback); 
      } 
     }.start(); 
    } 
}; 

Ich brauche die .setMimeType() und die outputStream zu ändern, aber was genau?

meine JSON String wird wie folgt erklärt:

String json = gson.toJson(activeSubs); //activeSubs being an ArrayList 

Jede Hilfe sehr geschätzt wird.

+0

Warum? Json Text ist nur Text. Ich sehe keinen Dateinamen in Ihrem Code. – greenapps

+0

Das ist der Beispielcode aus den Google-Beispielen. Also ist das der richtige Weg, um auch einen JSON hochzuladen? brauchst du nichts anderes? – Daniele

+0

Ich sehe keinen Dateinamen in Ihrem Code. Und weiter können Sie Ihre eigene Frage beantworten, indem Sie es einfach ausprobieren. – greenapps

Antwort

1

Dieses regelte es für mich:

String json = gson.tojson(activeSubs); 

final private ResultCallback<DriveContentsResult> driveContentsCallback = new 
     ResultCallback<DriveContentsResult>() { 
    @Override 
    public void onResult(DriveContentsResult result) { 
     if (!result.getStatus().isSuccess()) { 
      showMessage("Error while trying to create new file contents"); 
      return; 
     } 
     final DriveContents driveContents = result.getDriveContents(); 

     // Perform I/O off the UI thread. 
     new Thread() { 
      @Override 
      public void run() { 
       // write content to DriveContents 
       OutputStream outputStream = driveContents.getOutputStream(); 
       Writer writer = new OutputStreamWriter(outputStream); 
       try { 
        writer.write(json); 
        writer.close(); 
       } catch (IOException e) { 
        Log.e(TAG, e.getMessage()); 
       } 

       MetadataChangeSet changeSet = new MetadataChangeSet.Builder() 
         .setTitle("New file.txt") 
         .setMimeType("json") 
         .setStarred(true).build(); 

       // create a file on root folder 
       Drive.DriveApi.getRootFolder(getGoogleApiClient()) 
         .createFile(getGoogleApiClient(), changeSet, driveContents) 
         .setResultCallback(fileCallback); 
      } 
     }.start(); 
    } 
};