8
votes

API Google Drive - Android - Comment obtenir un identifiant de fichier de lecteur?

J'essaie de développer une application Android qui peut lire un fichier XML stocké dans mon dossier Google Drive, l'idée d'abord d'essayer d'ouvrir le fichier et de gérer le contenu.

J'ai lu le Documents de Google Drive API pour Android et j'ai atteint un point que je suis perdu, cela fonctionne avec le contenu du fichier.

Selon ce guide, la façon d'ouvrir un fichier à partir de lecteur est la suivante: p> xxx pré>

recherche de la recherche que le code complet (qu'ils n'incluent pas qu'il y ait ): P>

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,DriveId.bg(id));
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);`


1 commentaires

Vous pouvez essayer d'ouvrir le sélecteur de fichier d'entraînement à l'aide de l'API NewOpenfileActivityBuilder qui permet à l'utilisateur de choisir le fichier d'entraînement. Le rappel de cet appel de l'API vous rendrait le lecteur du fichier cueillé, puis vous pouvez récupérer le contenu comme vous le faites maintenant. Voir développeurs.google.com/drive/android/intro#files et ' Ouvrez un fichier 'code à développeurs.google.com/drive/android


4 Réponses :


6
votes

Vous pouvez utiliser la méthode de la requête DiveapI pour récupérer les informations sur un fichier spécifique. Vous devrez définir un objet de requête comme suit: xxx

et définissez une fonction de rappel sur itérer sur les résultats: xxx

vous Peut trouver plus d'informations sur le sujet ici: https://developers.google.com/drive/andrroid/ Queries


1 commentaires

Cette API est maintenant obsolète.



1
votes

Je joue avec ce truc de quelques mois et j'ai toujours du code sur GitHub. Il peut être très obsolète (liber 15 ou plus), mais il peut servir de point de référence, et c'est (j'espère simple). Regardez ici . Tirez-le, branchez-le, pas à travers. Correction de ce qui ne fonctionne plus :-). J'ai abandonné cela il y a quelque temps.

Soyez conscient du fait qu'il existe 2 identifiants différents pour Google Drive Android Objects, voir SO 22841237 .

En général, vous commencez généralement par connaître le nom de fichier / dossier, requête GDAA pour obtenir une liste d'objets. Chacun d'entre eux cédera l'entraîneur et la ressourceID. DriveID est utilisé dans votre application pour manipuler les objets (ne signifie rien en dehors de votre application Android et / ou de votre appareil). GestionID est la chaîne qui apparaît sous différentes formes dans les URL et peut être utilisée en dehors de votre application (navigateur Web par exemple ...). Regardez ce wrapper pour avoir ressentie comment il travaux. Mais encore une fois, cela fait quelques versions de retour, il n'y a donc aucune garantie. Bonne chance ...


0 commentaires

2
votes

La solution que j'ai trouvée pour ce problème créait le fichier de l'application. Utilisation de la classe ( " CreatefileActivitit.java " strong> ) à partir de Google Drive API Demo App.

Avec cette classe I Enregistrez le renvoi d'issue du nouveau fichier dans une variable de luttide globale. p> xxx pré>

puis avec cet identifiant dans une autre méthode je appelle le fichier et lisez-le (si je veux que je puisse modifier ces informations de fichier à partir de Google Drive Web App): P>

 public void leer(){
       DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(),Id);
       file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
               .setResultCallback(contentsOpenedCallback);
   }
ResultCallback<DriveApi.DriveContentsResult> contentsOpenedCallback =
        new ResultCallback<DriveApi.DriveContentsResult>() {
            @Override
            public void onResult(DriveApi.DriveContentsResult result) {
                if (!result.getStatus().isSuccess()) {
                    Log.e("Error:","No se puede abrir el archivo o no se encuentra");
                    return;
                }
                // DriveContents object contains pointers
                // to the actual byte stream
                DriveContents contents = result.getDriveContents();
                BufferedReader reader = new BufferedReader(new InputStreamReader(contents.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.e("RESULT:",contentsAsString);
            }
        };


1 commentaires

Mais comment puis-je modifier le contenu du même fichier, s'il vous plaît pouvez-vous publier du code?



0
votes

L'API Google Drive est obsolète, maintenant son Google Drive v3 et pour la requête que nous utilisons

String pageToken = null;
  do {
  FileList result = driveService.files().list()
  .setQ("mimeType='image/jpeg'")
  .setSpaces("drive")
  .setFields("nextPageToken, files(id, name)")
  .setPageToken(pageToken)
  .execute();
  for (File file : result.getFiles()) {
  System.out.printf("Found file: %s (%s)\n",
    file.getName(), file.getId());
  }
  pageToken = result.getNextPageToken();
  } 

  while (pageToken != null);


0 commentaires