Recherche…


Introduction

Google Drive est un service d'hébergement de fichiers créé par Google . Il fournit un service de stockage de fichiers et permet à l'utilisateur de télécharger des fichiers dans le cloud et de les partager avec d'autres personnes. Grâce à l'API Google Drive, nous pouvons synchroniser des fichiers entre un ordinateur ou un appareil mobile et Google Drive Cloud.

Remarques

Légal

Si vous utilisez l'API Google Drive Android dans votre application, vous devez inclure le texte d'attribution Google Play Services dans la section "Mentions légales" de votre application.

Il est recommandé d'inclure les avis juridiques en tant qu'élément de menu indépendant ou en tant qu'élément d'un élément de menu "À propos".

Vous pouvez appeler GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo() pour obtenir le texte d'attribution à l'exécution.

Intégrer Google Drive dans Android

Créer un nouveau projet sur Google Developer Console

Pour intégrer une application Android à Google Drive, créez les informations d'identification du projet dans Google Developers Console. Nous devons donc créer un projet sur la console de développement Google.

Pour créer un projet sur Google Developer Console, procédez comme suit:

  • Accédez à Google Developer Console pour Android. Remplissez votre nom du projet dans le champ de saisie et cliquez sur le bouton Créer pour créer un nouveau projet sur la console Google Developer. entrer la description de l'image ici

  • Nous devons créer des informations d'identification pour accéder à l'API. Alors, cliquez sur le bouton Créer des identifiants . entrer la description de l'image ici

  • Maintenant, une fenêtre pop s'ouvrira. Cliquez sur l'option Clé API dans la liste pour créer une clé API. entrer la description de l'image ici

  • Nous avons besoin d'une clé API pour appeler les API Google pour Android. Alors, cliquez sur la touche Android pour identifier votre projet Android. entrer la description de l'image ici

  • Ensuite, nous devons ajouter le nom du package du projet Android et l' empreinte SHA-1 dans les champs d'entrée pour créer une clé API. entrer la description de l'image ici

  • Nous devons générer une empreinte SHA-1 . Ouvrez donc votre terminal et lancez l' utilitaire Keytool pour obtenir l'empreinte SHA1. Lors de l'exécution de l'utilitaire Keytool, vous devez fournir un mot de passe pour le fichier de clés. Le mot de passe de développement par défaut est «Android» . keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v entrer la description de l'image ici

  • Maintenant, ajoutez le nom du package et l' empreinte SHA-1 dans les champs de saisie de la page d'informations d'identification. Enfin, cliquez sur le bouton Créer pour créer une clé API. entrer la description de l'image ici

  • Cela va créer une clé API pour Android. Nous utiliserons cette clé API pour intégrer l'application Android à Google Drive. entrer la description de l'image ici

Activer l'API Google Drive

Nous devons activer Google Drive Api pour accéder aux fichiers stockés sur Google Drive depuis une application Android. Pour activer l'API Google Drive, suivez les étapes ci-dessous:

  • Accédez à votre tableau de bord de la console de développeur Google et cliquez sur Activer les API pour obtenir des informations d'identification telles que des clés. Vous verrez alors les populaires API Google. entrer la description de l'image ici

  • Cliquez sur le lien API du lecteur pour ouvrir la page de présentation de l'API Google Drive. entrer la description de l'image ici

  • Cliquez sur le bouton Activer pour activer l'API Google Drive. Il permet un accès client à Google Drive. entrer la description de l'image ici

Ajouter une autorisation Internet

App nécessite un accès Internet aux fichiers Google Drive. Utilisez le code suivant pour configurer les autorisations Internet dans le fichier AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

Ajouter des services Google Play

Nous utiliserons l' API de services Google Play qui comprend l' API Google Drive Android . Nous devons donc configurer les services de jeu Google SDK dans une application Android. Ouvrez votre build.gradle (module d'application) et ajoutez le SDK de services Google play en tant que dépendances.

dependencies {
  ....
    compile 'com.google.android.gms:play-services:<latest_version>'
  ....
}

Ajouter une clé API dans le fichier manifeste

Pour utiliser l'API Google dans une application Android, nous devons ajouter la clé API et la version du service Google Play dans le fichier AndroidManifest.xml. Ajoutez les balises de métadonnées correctes à l'intérieur de la balise du fichier AndroidManifest.xml.

Connectez-vous et autorisez l'API Google Drive Android

Nous devons nous authentifier et connecter l' API Google Drive Android à une application Android. L'autorisation de Google Drive Android API est gérée par GoogleApiClient . Nous utiliserons GoogleApiClient dans la méthode onResume () .

/**
 * Called when the activity will start interacting with the user.
 * At this point your activity is at the top of the activity stack,
 * with user input going to it.
 */
@Override
protected void onResume() {
   super.onResume();
   if (mGoogleApiClient == null) {

       /**
        * Create the API client and bind it to an instance variable.
        * We use this instance as the callback for connection and connection failures.
        * Since no account name is passed, the user is prompted to choose.
        */
         mGoogleApiClient = new GoogleApiClient.Builder(this)
                 .addApi(Drive.API)
                 .addScope(Drive.SCOPE_FILE)
                 .addConnectionCallbacks(this)
                 .addOnConnectionFailedListener(this)
                 .build();
        }

        mGoogleApiClient.connect();
    }

Déconnecter l'API Android de Google Deive

Lorsque l'activité s'arrête, nous allons déconnecter la connexion API Google Drive Android avec l'application Android en appelant la méthode disconnect () dans la méthode onStop () de l'activité .

@Override
protected void onStop() {
    super.onStop();
    if (mGoogleApiClient != null) {

         // disconnect Google Android Drive API connection.
         mGoogleApiClient.disconnect();
    }
    super.onPause();
}

Implémenter des rappels de connexion et un écouteur avec échec de connexion

Nous implémenterons les callbacks de connexion et le listener d'échec de connexion du client API Google dans le fichier MainActivity.java pour connaître l'état de la connexion du client API Google. Ces écouteurs fournissent la méthode onConnected (), onConnectionFailed (), onConnectionSuspended () pour gérer les problèmes de connexion entre l'application et le lecteur.

Si l'utilisateur a autorisé l'application, la méthode onConnected () est appelée. Si l'utilisateur n'a pas autorisé l'application, la méthode onConnectionFailed () est appelée et une boîte de dialogue s'affiche pour indiquer que votre application n'est pas autorisée à accéder à Google Drive. Si la connexion est suspendue, la méthode onConnectionSuspended () est appelée.

Vous devez implémenter ConnectionCallbacks et OnConnectionFailedListener dans votre activité. Utilisez le code suivant dans votre fichier Java.

@Override
    public void onConnectionFailed(ConnectionResult result) {

        // Called whenever the API client fails to connect.
        Log.i(TAG, "GoogleApiClient connection failed:" + result.toString());

        if (!result.hasResolution()) {

            // show the localized error dialog.
            GoogleApiAvailability.getInstance().getErrorDialog(this, result.getErrorCode(), 0).show();
            return;
        }

        /**
         *  The failure has a resolution. Resolve it.
         *  Called typically when the app is not yet authorized, and an  authorization
         *  dialog is displayed to the user.
         */

        try {

            result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);

        } catch (SendIntentException e) {

            Log.e(TAG, "Exception while starting resolution activity", e);
        }
    }

   /**
    * It invoked when Google API client connected
    * @param connectionHint
    */
    @Override
    public void onConnected(Bundle connectionHint) {

        Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
    }

   /**
    * It invoked when connection suspended
    * @param cause
    */
    @Override
    public void onConnectionSuspended(int cause) {

        Log.i(TAG, "GoogleApiClient connection suspended");
    }

Créer un fichier sur Google Drive

Nous allons ajouter un fichier sur Google Drive. Nous allons utiliser la createFile() d'un objet Drive pour créer un fichier par programme sur Google Drive. Dans cet exemple nous ajoutons un nouveau fichier texte dans le dossier racine de l'utilisateur. Lorsqu'un fichier est ajouté, nous devons spécifier le jeu initial de métadonnées, le contenu du fichier et le dossier parent.

Nous devons créer une méthode de rappel CreateMyFile() et, au sein de cette méthode, utiliser l'objet Drive pour extraire une ressource DriveContents . Ensuite, nous passons le client API à l'objet Drive et appelons la méthode de rappel driveContentsCallback pour gérer le résultat de DriveContents .

Une ressource DriveContents contient une copie temporaire du flux binaire du fichier, uniquement disponible pour l'application.

public void CreateMyFile(){
    fileOperation = true;
    // Create new contents resource.
    Drive.DriveApi.newDriveContents(mGoogleApiClient)
                  .setResultCallback(driveContentsCallback);
}

Gestionnaire de résultat de DriveContents

La gestion de la réponse nécessite de vérifier si l'appel a réussi ou non. Si l'appel a réussi, nous pouvons récupérer la ressource DriveContents .

Nous allons créer un gestionnaire de résultats de DriveContents . Dans cette méthode, nous appelons la méthode CreateFileOnGoogleDrive() et transmettons le résultat de DriveContentsResult :

/**
 * This is the Result result handler of Drive contents.
 * This callback method calls the CreateFileOnGoogleDrive() method.
 */
final ResultCallback<DriveContentsResult> driveContentsCallback =
         new ResultCallback<DriveContentsResult>() {
            @Override
            public void onResult(DriveContentsResult result) {
                if (result.getStatus().isSuccess()) {
                    if (fileOperation == true){
                        CreateFileOnGoogleDrive(result);
                    }
                }
            }
        };

Créer un fichier par programme

Pour créer des fichiers, nous devons utiliser un objet MetadataChangeSet . En utilisant cet objet, nous définissons le titre (nom du fichier) et le type de fichier. En outre, nous devons utiliser la createFile() de la classe DriveFolder et transmettre l'API cliente Google, l'objet MetaDataChangeSet et driveContents pour créer un fichier. Nous appelons le rappel du gestionnaire de résultats pour gérer le résultat du fichier créé.

Nous utilisons le code suivant pour créer un nouveau fichier texte dans le dossier racine de l'utilisateur:

/**
 * Create a file in the root folder using a MetadataChangeSet object.
 * @param result
 */
public void CreateFileOnGoogleDrive(DriveContentsResult result){

    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 Christlin!");
                writer.close();
            } catch (IOException e) {
                Log.e(TAG, e.getMessage());
            }

            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setTitle("My First Drive File")
                    .setMimeType("text/plain")
                    .setStarred(true).build();

            // Create a file in the root folder.
            Drive.DriveApi.getRootFolder(mGoogleApiClient)
                    .createFile(mGoogleApiClient, changeSet, driveContents)
                    setResultCallback(fileCallback);
        }
   }.start();
}

Gérer le résultat du fichier créé

Le code suivant créera une méthode de rappel pour gérer le résultat du fichier créé:

/**
 * Handle result of Created file
 */
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
        ResultCallback<DriveFolder.DriveFileResult>() {
            @Override
            public void onResult(DriveFolder.DriveFileResult result) {
                if (result.getStatus().isSuccess()) {
                    Toast.makeText(getApplicationContext(), "file created: "+
                                result.getDriveFile().getDriveId(), Toast.LENGTH_LONG).show();
                }
                return;
            }
        };


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow