Zoeken…


Invoering

Google Drive is een service voor bestandshosting die is gemaakt door Google . Het biedt service voor bestandsopslag en stelt de gebruiker in staat bestanden in de cloud te uploaden en ook met andere mensen te delen. Met Google Drive API kunnen we bestanden synchroniseren tussen computer of mobiel apparaat en Google Drive Cloud.

Opmerkingen

wettelijk

Als u de Google Drive Android API in uw applicatie gebruikt, moet u de attributietekst van Google Play Services opnemen als onderdeel van een sectie 'Juridische kennisgevingen' in uw applicatie.

Het wordt aanbevolen om juridische kennisgevingen op te nemen als een onafhankelijk menu-item of als onderdeel van een menu-item "Over".

U kunt GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo() bellen om de attributietekst tijdens runtime te krijgen.

Integreer Google Drive in Android

Maak een nieuw project op Google Developer Console

Om de Android-applicatie te integreren met Google Drive, maakt u de referenties van het project in de Google Developers Console. We moeten dus een project maken op de Google Developer-console.

Volg deze stappen om een project te maken op Google Developer Console:

  • Ga naar Google Developer Console voor Android. Vul de naam van uw project in het invoerveld en klik op de knop Maken om een nieuw project op Google Developer console te maken. voer hier de afbeeldingsbeschrijving in

  • We moeten referenties aanmaken om toegang te krijgen tot API. Klik dus op de knop Referenties maken . voer hier de afbeeldingsbeschrijving in

  • Nu wordt een pop-venster geopend. Klik op de optie API-sleutel in de lijst om een API-sleutel te maken. voer hier de afbeeldingsbeschrijving in

  • We hebben een API-sleutel nodig om Google API's voor Android aan te roepen. Klik dus op de Android-toets om uw Android-project te identificeren. voer hier de afbeeldingsbeschrijving in

  • Vervolgens moeten we de pakketnaam van het Android-project en de SHA-1-vingerafdruk toevoegen in de invoervelden om een API-sleutel te maken. voer hier de afbeeldingsbeschrijving in

  • We moeten SHA-1-vingerafdruk genereren. Open dus uw terminal en voer Keytool uit om de SHA1-vingerafdruk te krijgen. Tijdens het uitvoeren van het hulpprogramma Keytool moet u het wachtwoord van de keystore opgeven . Het standaard wachtwoord voor ontwikkelingstooltool is 'android' . keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v voer hier de afbeeldingsbeschrijving in

  • Voeg nu Pakketnaam en SHA-1-vingerafdruk toe in invoervelden op de inlogpagina. Klik ten slotte op de knop Maken om de API-sleutel te maken. voer hier de afbeeldingsbeschrijving in

  • Hiermee wordt een API-sleutel voor Android gemaakt. We zullen deze API-sleutel gebruiken om de Android-applicatie te integreren met Google Drive. voer hier de afbeeldingsbeschrijving in

Schakel Google Drive API in

We moeten Google Drive Api toegang geven tot bestanden die zijn opgeslagen op Google Drive vanuit de Android-applicatie. Volg onderstaande stappen om Google Drive API in te schakelen:

  • Ga naar uw Google Developer console Dashboard en klik op API's inschakelen om referenties zoals sleutels te verkrijgen, dan ziet u populaire Google API's. voer hier de afbeeldingsbeschrijving in

  • Klik op de Drive API- link om de overzichtspagina van Google Drive API te openen. voer hier de afbeeldingsbeschrijving in

  • Klik op de knop Inschakelen om Google Drive API in te schakelen. Het geeft clienttoegang tot Google Drive. voer hier de afbeeldingsbeschrijving in

Internetmachtiging toevoegen

App heeft Google Drive-bestanden met internettoegang nodig. Gebruik de volgende code om internetmachtigingen in te stellen in het bestand AndroidManifest.xml:

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

Voeg Google Play-services toe

We zullen Google Play Services API gebruiken die de Google Drive Android API bevat . Dus moeten we Google Play Services SDK instellen in de Android-applicatie. Open uw build.gradle (app-module) en voeg Google Play Services SDK toe als afhankelijkheden.

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

Voeg een API-sleutel toe aan het Manifest-bestand

Als u Google API in de Android-toepassing wilt gebruiken, moeten we de API-sleutel en -versie van de Google Play-service toevoegen aan het bestand AndroidManifest.xml. Voeg de juiste metadatatags toe binnen de tag van het bestand AndroidManifest.xml.

Verbind en autoriseer de Google Drive Android API

We moeten Google Drive Android API verifiëren en verbinden met de Android-applicatie. Autorisatie van Google Drive Android API wordt afgehandeld door GoogleApiClient . We zullen GoogleApiClient te gebruiken binnen onResume () methode.

/**
 * 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();
    }

Verbreek de Google Deive Android API

Wanneer de activiteit stopt, zullen we de Google Drive Android API-verbinding met de Android-toepassing verbreken door de methode disconnect () aan te roepen in de onStop () -methode van activity.

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

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

Implementeer Connection Callbacks en Connection Failed Listener

We zullen Connection Callbacks en Connection Failed Listener van Google API-client implementeren in het bestand MainActivity.java om de status van de verbinding van Google API-client te kennen. Deze luisteraars bieden de methode onConnected (), onConnectionFailed (), onConnectionSuspended () om de verbindingsproblemen tussen de app en Drive af te handelen.

Als de gebruiker de toepassing heeft geautoriseerd, wordt de methode onConnected () aangeroepen. Als de gebruiker de applicatie niet heeft geautoriseerd, wordt de methode onConnectionFailed () aangeroepen en wordt er een dialoogvenster voor de gebruiker weergegeven dat uw app geen toegang heeft tot Google Drive. Als de verbinding wordt onderbroken, wordt de methode onConnectionSuspended () aangeroepen.

U moet ConnectionCallbacks en OnConnectionFailedListener in uw activiteit implementeren. Gebruik de volgende code in uw Java-bestand.

@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");
    }

Maak een bestand op Google Drive

We zullen een bestand toevoegen op Google Drive. We gebruiken de methode createFile() van een Drive object om programmatisch een bestand op Google Drive te maken. In dit voorbeeld voegen we een nieuw tekstbestand toe aan de hoofdmap van de gebruiker. Wanneer een bestand wordt toegevoegd, moeten we de eerste set metagegevens, de inhoud van het bestand en de bovenliggende map opgeven.

We moeten een CreateMyFile() callback-methode maken en binnen deze methode het Drive object gebruiken om een DriveContents bron op te halen. Vervolgens geven we de API-client door aan het Drive object en roepen de driveContentsCallback callback-methode aan om het resultaat van DriveContents .

Een DriveContents bron bevat een tijdelijke kopie van de binaire stream van het bestand die alleen beschikbaar is voor de toepassing.

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

Resultaathandler van DriveContents

Om de reactie af te handelen, moet worden gecontroleerd of de oproep succesvol was of niet. Als de oproep succesvol was, kunnen we de DriveContents bron ophalen.

We zullen een resultaathandler van DriveContents . Binnen deze methode roepen we de methode CreateFileOnGoogleDrive() en geven we het resultaat van 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);
                    }
                }
            }
        };

Maak een programma programmatisch aan

Om bestanden te maken, moeten we een MetadataChangeSet object gebruiken. Door dit object te gebruiken, stellen we de titel (bestandsnaam) en het bestandstype in. We moeten ook de methode createFile() van de klasse DriveFolder en de Google client-API, het MetaDataChangeSet object en de driveContents om een bestand te maken. We noemen de resultaathandler callback om het resultaat van het gemaakte bestand af te handelen.

We gebruiken de volgende code om een nieuw tekstbestand in de hoofdmap van de gebruiker te maken:

/**
 * 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();
}

Resultaat van aangemaakt bestand verwerken

De volgende code maakt een callback-methode om het resultaat van het gemaakte bestand af te handelen:

/**
 * 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow