package com.orisider.oneclickgoogd; import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.os.Bundle; import android.util.Log; import com.google.api.client.extensions.android.http.AndroidHttp; import com.google.api.client.extensions.android.json.AndroidJsonFactory; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.services.GoogleKeyInitializer; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.services.drive.Drive; import com.google.api.services.drive.model.File; import com.google.api.services.drive.model.Permission; import com.google.api.services.drive.model.PermissionList; import java.io.IOException; public class AccountManagerCallbackImpl implements AccountManagerCallback<Bundle> { private final String mFileId; AccountManagerCallbackImpl(String mFileId) { this.mFileId = mFileId; } @Override public void run(AccountManagerFuture<Bundle> future) { Bundle bundle; try { bundle = future.getResult(); String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN); Log.d(Constant.LOG_TAG, "auth token:" + authToken); final HttpTransport transport = AndroidHttp.newCompatibleTransport(); final JsonFactory jsonFactory = new AndroidJsonFactory(); GoogleCredential credential = new GoogleCredential.Builder() .setClientSecrets(Constant.CLIENT_API_ID, Constant.CLIENT_API_SECRET).build(); credential.setAccessToken(authToken); final Drive drive = new Drive.Builder(transport, jsonFactory, credential) .setApplicationName("OneTouchGDrive") .setJsonHttpRequestInitializer(new GoogleKeyInitializer(Constant.SIMPLE_API_KEY)) .build(); new Thread( new Runnable() { @Override public void run() { File file = null; try { PermissionList list = drive.permissions().list(mFileId).execute(); for(Object v: list.values() ) { Log.d(Constant.LOG_TAG, "perm item:"+v); } Permission anyoneReadPerm = new Permission(); //anyoneReadPerm.setValue("anyone"); anyoneReadPerm.setType("anyone"); anyoneReadPerm.setRole("reader"); drive.permissions().insert(mFileId,anyoneReadPerm ).execute(); file = drive.files().get(mFileId).execute(); Log.d(Constant.LOG_TAG, "title:" + file.getTitle()); Log.d(Constant.LOG_TAG, "download url:" + file.getDownloadUrl()); Log.d(Constant.LOG_TAG, "kind:" + file.getKind()); Log.d(Constant.LOG_TAG, "web content link:" + file.getWebContentLink()); } catch (IOException e) { Log.w(Constant.LOG_TAG, "failed to get file", e); } } } ).start(); } catch (Throwable e) { Log.w(Constant.LOG_TAG, "error", e); } } }