2016-07-18 14 views
0

Ich konnte eine Google Drive-Dateiauswahl einrichten, damit ich den Inhalt jeder vom Benutzer ausgewählten Datei lesen kann. Allerdings möchte ich in der Lage sein, die vom Benutzer ausgewählten Google Docs-Dateien als Textdateien herunterzuladen und deren Inhalt dann zu lesen, obwohl ich nur mithilfe der Drive Rest-API, von der ich glaube, dass sie getrennt ist, Lösungen finden kann Google Drive API für Android. Gibt es eine Lösung, die mir erlauben würde, dies zu tun? Derzeit lautet mein Code zum Herunterladen von Dateien wie folgt:Google Docs-Dokument als Textdatei mit Google Drive API für Android herunterladen

final private class RetrieveDriveFileContentsAsyncTask 
     extends ApiClientAsyncTask<DriveId, Boolean, String> { 

    public RetrieveDriveFileContentsAsyncTask(Context context) { 
     super(context); 
    } 

    @Override 
    protected String doInBackgroundConnected(DriveId... params) throws IOException { 
     String contents = null; 
     DriveId driveId=params[0]; 
     DriveFile file = driveId.asDriveFile(); 
     DriveApi.DriveContentsResult driveContentsResult = 
       file.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null).await(); 
     if (!driveContentsResult.getStatus().isSuccess()) { 
      return null; 
     } 
     DriveContents driveContents = driveContentsResult.getDriveContents(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(driveContents.getInputStream())); 
     StringBuilder builder = new StringBuilder(); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
      builder.append('\n'); 
     } 
     contents = builder.toString(); 
     driveContents.discard(getGoogleApiClient()); 
     return contents; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     if (result == null) { 
      return; 
     } 
     Intent intent=new Intent(getContext(),NotesActivity.class); 
     intent.putExtra("setTextTo",result); 
     startActivity(intent); 
    } 
} 
+0

Die Android-API ist ein Wrapper für die REST-API, sodass Sie ein File-Objekt erhalten können. Und können Sie ein Dokument öffnen und den Inhalt zu einem String lesen? –

+0

Ich kann den Inhalt in einer Zeichenfolge beliebiger Dateien lesen, die in Google-Dokumenten erstellt wurden. Außerdem glaube ich nicht, dass ich das gleiche Dateiobjekt bekommen kann. – Daniel

+0

Okay, wenn Sie den Inhalt lesen können, dann können Sie das in eine Textdatei schreiben, was genau ist das Problem? –

Antwort

2

Nein Google Drive Android API bietet keine Konvertierungsfunktionalität. Sie müssten dafür die REST-API verwenden.

+0

Enthält die Rest-API eine Dateiauswahl, die ich anstelle der Google Drive-API für Android verwenden kann? – Daniel

+1

Nein, es gibt keine Androiden-Dateiauswahl durch die REST-API (es gibt eine Web-Dateiauswahl). Ich denke, in Ihrer Situation wäre es wahrscheinlich am besten, die Drive android API zu verwenden, um die Dateiauswahl anzuzeigen. Sobald die Datei ausgewählt ist, können Sie die resourceId der ausgewählten Datei (returnedDriveId.getResourceId()) abrufen und diese in den REST-API-Anfragen verwenden, um die Konvertierung durchzuführen. – Shailendra

+0

@Shailendra Ich versuche das Gleiche zu tun. Um die Drive Service-Instanz zu erstellen, benötigen Sie den Kontonamen, der in Google Drive Android API nicht abgerufen werden kann – osayilgan