Sök…


Introduktion

Google Drive är en filhotelltjänst skapad av Google . Det tillhandahåller fillagringstjänst och gör att användaren kan ladda upp filer i molnet och också dela med andra människor. Med Google Drive API kan vi synkronisera filer mellan dator eller mobil enhet och Google Drive Cloud.

Anmärkningar

Rättslig

Om du använder Google Drive Android API i din ansökan måste du inkludera tilldelningstexten för Google Play Services som en del av avsnittet "Juridiska meddelanden" i din ansökan.

Det rekommenderas att du inkluderar juridiska meddelanden som ett oberoende menypost eller som en del av ett "Om" -menyobjekt.

Du kan ringa till GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo() att få tillskrivningstexten vid körning.

Integrera Google Drive i Android

Skapa ett nytt projekt på Google Developer Console

För att integrera Android-applikationen med Google Drive skapar du projektets referenser i Google Developers Console. Så vi måste skapa ett projekt på Google Developer Console.

Så här skapar du ett projekt på Google Developer Console:

  • Gå till Google Developer Console för Android. Fyll ditt projektnamnet i inmatningsfältet och klicka på knappen Skapa för att skapa ett nytt projekt på Google utvecklarkonsolen. ange bildbeskrivning här

  • Vi måste skapa referenser för att komma åt API. Så, klicka på knappen Skapa referenser . ange bildbeskrivning här

  • Nu öppnas ett pop-fönster. Klicka på alternativet API-nyckel i listan för att skapa API-nyckel. ange bildbeskrivning här

  • Vi behöver en API-nyckel för att kalla Google API: er för Android. Så, klicka på Android-nyckeln för att identifiera ditt Android-projekt. ange bildbeskrivning här

  • Därefter måste vi lägga till paketnamn för Android-projektet och SHA-1-fingeravtryck i inmatningsfältet för att skapa API-nyckel. ange bildbeskrivning här

  • Vi måste skapa SHA-1-fingeravtryck . Så öppna din terminal och kör Keytool-verktyget för att få SHA1-fingeravtrycket. När du kör Keytool-verktyget måste du ange lösenord för keystore . Standardutveckling keytool lösenord är "Android" . keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v ange bildbeskrivning här

  • Lägg nu till paketnamn och SHA-1-fingeravtryck i inmatningsfält på referenssidan. Slutligen, klicka på skapa-knappen för att skapa API-nyckel. ange bildbeskrivning här

  • Detta skapar API-nyckel för Android. Vi kommer att använda denna API-nyckel för att integrera Android-applikationen med Google Drive. ange bildbeskrivning här

Aktivera Google Drive API

Vi måste aktivera Google Drive Api för att få åtkomst till filer lagrade på Google Drive från Android-applikationen. Så här aktiverar du Google Drive API:

  • Gå till din Google Developer Console Dashboard och klicka på Aktivera API: er få referenser som nycklar så ser du populära Google API: er. ange bildbeskrivning här

  • Klicka på Drive API- länken för att öppna översiktssidan för Google Drive API. ange bildbeskrivning här

  • Klicka på Aktivera för att aktivera Google Drive API. Det ger klientåtkomst till Google Drive. ange bildbeskrivning här

Lägg till Internet-tillstånd

App behöver Internet- åtkomst till Google Drive-filer. Använd följande kod för att ställa in Internetbehörigheter i filen AndroidManifest.xml:

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

Lägg till Google Play-tjänster

Vi kommer att använda Google Play Services API som inkluderar Google Drive Android API . Så vi måste konfigurera Google Play-tjänster SDK i Android-applikationen. Öppna build.gradle ( build.gradle ) och lägg till Google Play Services SDK som beroenden.

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

Lägg till API-nyckel i Manifest-filen

För att kunna använda Google API i Android-applikationen måste vi lägga till API-nyckel och version av Google Play-tjänsten i filen AndroidManifest.xml. Lägg till rätt metadatataggar i taggen i filen AndroidManifest.xml.

Anslut och auktorisera Google Drive Android API

Vi måste verifiera och ansluta Google Drive Android API till Android-applikationen. Godkännande av Google Drive Android API hanteras av GoogleApiClient . Vi kommer att använda GoogleApiClient i metoden 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();
    }

Koppla från Google Deive Android API

När aktiviteten upphör kommer vi att koppla från Google Drive Android API-anslutningen med Android-applikationen genom att ringa frånkopplingsmetoden () i aktivitetens onStop () -metod.

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

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

Implementera anslutningssuppringningar och anslutning misslyckades lyssnare

Vi kommer att implementera Connection Callbacks och Connection Failed Listener för Google API-klient i MainActivity.java-fil för att veta status om anslutning av Google API-klient. Dessa lyssnare tillhandahåller metoden OnConnected (), onConnectionFailed (), onConnectionSuspended () för att hantera anslutningsfrågorna mellan app och Drive.

Om användaren har godkänt applikationen åberopas metoden onConnected () . Om användaren inte har godkänt ansökan startas onConnectionFailed () -metoden och en dialogruta visas för användaren att din app inte är behörig att få åtkomst till Google Drive. Om anslutningen avbryts kallas metoden onConnectionSuspended () .

Du måste implementera ConnectionCallbacks och OnConnectionFailedListener i din aktivitet. Använd följande kod i din Java-fil.

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

Skapa en fil på Google Drive

Vi lägger till en fil på Google Drive. Vi kommer att använda createFile() för ett Drive objekt för att skapa fil programmatiskt på Google Drive. I det här exemplet lägger vi till en ny textfil i användarens rotmapp. När en fil läggs till måste vi ange den ursprungliga uppsättningen metadata, filinnehåll och överordnad mapp.

Vi måste skapa en CreateMyFile() återuppringningsmetod och inom den här metoden använder du Drive objektet för att hämta en DriveContents resurs. Sedan skickar vi API-klienten till Drive objektet och kallar driveContentsCallback återuppringningsmetoden för att hantera resultatet av DriveContents .

En DriveContents resurs innehåller en tillfällig kopia av filens binära ström som endast är tillgänglig för applikationen.

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

Resultathandlare av DriveContents

För att hantera svaret måste du kontrollera om samtalet lyckades eller inte. Om samtalet lyckades kan vi hämta DriveContents resursen.

Vi kommer att skapa en resultathanterare av DriveContents . Inom den här metoden kallar vi metoden CreateFileOnGoogleDrive() och DriveContentsResult resultatet av 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);
                    }
                }
            }
        };

Skapa fil programmatiskt

För att skapa filer måste vi använda ett MetadataChangeSet objekt. Genom att använda detta objekt ställer vi in titeln (filnamn) och filtyp. Vi måste också använda createFile() i klassen DriveFolder och passera Google-klient-API: et, MetaDataChangeSet objektet och driveContents att skapa en fil. Vi kallar återhämtning av resultathanteraren för att hantera resultatet av den skapade filen.

Vi använder följande kod för att skapa en ny textfil i användarens rotmapp:

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

Hantera resultatet av Skapad fil

Följande kod skapar en återuppringningsmetod för att hantera resultatet av den skapade filen:

/**
 * 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow