SparkyNZ
SparkyNZ

Reputation: 6676

Google Drive API: How to delete a file?

I'm trying to follow Google's documentation here but I don't know how to get the file paramter for the delete() method. The "quickstart" example project doesn't show how to delete a file or reference file query results.

Can somebody please help me determine what should be passed into the delete() method below:

final String sFilename = "HelloWorld.txt";

    Query query = new Query.Builder()
            .addFilter( Filters.eq( SearchableField.TITLE, sFilename ) )
            .build();

    Task<MetadataBuffer > queryTask = client.query(query);

    queryTask
            .addOnSuccessListener( this,
                    new OnSuccessListener< MetadataBuffer >()
                    {
                      @Override
                      public void onSuccess( MetadataBuffer metadataBuffer )
                      {
                        Log.i( TAG, "FOUND file: " + sFilename );

                        client.delete( /* WHAT GOES IN HERE? */ );
                      }
                    } )
            .addOnFailureListener( this, new OnFailureListener()
            {
              @Override
              public void onFailure( @NonNull Exception e )
              {
                Log.i( TAG, "ERROR: File not found: " + sFilename );
              }
            } );

Upvotes: 0

Views: 325

Answers (1)

SparkyNZ
SparkyNZ

Reputation: 6676

Found the solution - MetaDataBuffer is a collection of Metadata objects from which I can get a DriveResource object. The DriveResourceClient interface can be used to delete the files (DriveResource objects).

My code below will delete all HelloWorld.txt on my Google Drive:

final String sFilename = "HelloWorld.txt";

Query query = new Query.Builder()
        .addFilter( Filters.eq( SearchableField.TITLE, sFilename ) )
        .build();

Task<MetadataBuffer > queryTask = client.query(query);

queryTask.addOnSuccessListener( this,
        new OnSuccessListener< MetadataBuffer >()
        {
          @Override
          public void onSuccess( MetadataBuffer metadataBuffer )
          {
            for( Metadata m : metadataBuffer )
            {
              DriveResource driveResource = m.getDriveId().asDriveResource();

              Log.i( TAG, "Deleting file: " + sFilename + "  DriveId:(" + m.getDriveId() + ")" );
              client.delete( driveResource );
            }

          }
        } )
        .addOnFailureListener( this, new OnFailureListener()
        {
          @Override
          public void onFailure( @NonNull Exception e )
          {
            Log.i( TAG, "ERROR: File not found: " + sFilename );
          }
        } );

Upvotes: 2

Related Questions