Android Open Source - android-demos Pin File Activity






From Project

Back to project page android-demos.

License

The source code is released under:

Apache License

If you think the Android project android-demos listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2014 Google Inc. All Rights Reserved.
 *//from  w w  w. j  a va  2  s  . co  m
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.drive.sample.demo;

import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender.SendIntentException;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.drive.Drive;
import com.google.android.gms.drive.DriveFile;
import com.google.android.gms.drive.DriveId;
import com.google.android.gms.drive.DriveResource.MetadataResult;
import com.google.android.gms.drive.MetadataChangeSet;
import com.google.android.gms.drive.OpenFileActivityBuilder;

/**
 * An activity that pins a file to the device. Pinning allows
 * a file's latest version to be available locally all the time.
 * Your users should be informed about the extra bandwidth
 * and storage requirements of pinning.
 */
public class PinFileActivity extends BaseDemoActivity {

    private static final int REQUEST_CODE_OPENER = NEXT_AVAILABLE_REQUEST_CODE;

    private static final String TAG = "PinFileActivity";

    private DriveId mFileId;

    /**
     * Starts a file opener intent to pick a file.
     */
    @Override
    public void onConnected(Bundle connectionHint) {
        super.onConnected(connectionHint);
        if (mFileId == null) {
            IntentSender intentSender = Drive.DriveApi
                    .newOpenFileActivityBuilder()
                    .setMimeType(new String[] {"application/octet-stream"})
                    .build(getGoogleApiClient());
            try {
                startIntentSenderForResult(intentSender, REQUEST_CODE_OPENER,
                        null, 0, 0, 0);
            } catch (SendIntentException e) {
                Log.w(TAG, "Unable to send intent", e);
            }
        } else {
            DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(), mFileId);
            file.getMetadata(getGoogleApiClient()).setResultCallback(metadataCallback);
        }
    }

    /**
     * Handles response from the file picker.
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case REQUEST_CODE_OPENER:
            if (resultCode == RESULT_OK) {
                mFileId = (DriveId) data.getParcelableExtra(
                        OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
            } else {
                finish();
            }
            break;
        default:
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    /**
     * Handles the metadata response. If file is pinnable and not
     * already pinned, makes a request to pin the file.
     */
    final ResultCallback<MetadataResult> metadataCallback = new ResultCallback<MetadataResult>() {
        @Override
        public void onResult(MetadataResult result) {
            if (!result.getStatus().isSuccess()) {
                showMessage("Problem while trying to retrieve the file metadata");
                return;
            }
            if (!result.getMetadata().isPinnable()) {
                showMessage("File is not pinnable");
                return;
            }
            if (result.getMetadata().isPinned()) {
                showMessage("File is already pinned");
                return;
            }
            DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(), mFileId);
            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setPinned(true)
                    .build();
            file.updateMetadata(getGoogleApiClient(), changeSet)
                    .setResultCallback(pinningCallback);
        }
    };

    /**
     * Handles the pinning request's response.
     */
    final ResultCallback<MetadataResult> pinningCallback = new ResultCallback<MetadataResult>() {
        @Override
        public void onResult(MetadataResult result) {
            if (!result.getStatus().isSuccess()) {
                showMessage("Problem while trying to pin the file");
                return;
            }
            showMessage("File successfully pinned to the device");
        }
    };
}




Java Source Code List

com.google.android.gms.drive.sample.demo.ApiClientAsyncTask.java
com.google.android.gms.drive.sample.demo.BaseDemoActivity.java
com.google.android.gms.drive.sample.demo.CreateEmptyFileActivity.java
com.google.android.gms.drive.sample.demo.CreateFileActivity.java
com.google.android.gms.drive.sample.demo.CreateFileInAppFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFileInFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFileWithCreatorActivity.java
com.google.android.gms.drive.sample.demo.CreateFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFolderInFolderActivity.java
com.google.android.gms.drive.sample.demo.DeleteCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.EditContentsActivity.java
com.google.android.gms.drive.sample.demo.EditMetadataActivity.java
com.google.android.gms.drive.sample.demo.HomeActivity.java
com.google.android.gms.drive.sample.demo.InsertUpdateCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.ListFilesActivity.java
com.google.android.gms.drive.sample.demo.ListFilesInFolderActivity.java
com.google.android.gms.drive.sample.demo.PickFileWithOpenerActivity.java
com.google.android.gms.drive.sample.demo.PickFolderWithOpenerActivity.java
com.google.android.gms.drive.sample.demo.PinFileActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesInFolderActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesSharedWithMeActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesWithAInTitleActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesWithCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.QueryNonTextFilesActivity.java
com.google.android.gms.drive.sample.demo.QuerySortedFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryStarredTextFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryTextOrHtmlFilesActivity.java
com.google.android.gms.drive.sample.demo.ResultsAdapter.java
com.google.android.gms.drive.sample.demo.RetrieveContentsActivity.java
com.google.android.gms.drive.sample.demo.RetrieveContentsWithProgressDialogActivity.java
com.google.android.gms.drive.sample.demo.RetrieveMetadataActivity.java
com.google.android.gms.drive.sample.demo.SyncRequestsActivity.java
com.google.android.gms.drive.sample.demo.events.ListenChangeEventsForFilesActivity.java