프로그래밍과 잡담

[ 안드로이드]구글 드라이브 API를 통해서 파일 업로드 본문

프로그래밍/안드로이드

[ 안드로이드]구글 드라이브 API를 통해서 파일 업로드

크레온 2014. 8. 4. 00:02

https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/EditContentsActivity.java 페이지를 참조하면 

구글 드라이브 API를 통해서 파일을 구글 드라이브에 업로드하는 방법이 있다.


폴더 만들고 등등하는건 샘플페이지보면 잘 나와있으니 그걸 참조..


구글 드라이브 샘플 

https://github.com/googledrive/android-demos



public class EditContentsActivity extends BaseDemoActivity {

    private static final String TAG = "EditContentsActivity";

    @Override
    public void onConnected(Bundle connectionHint) {
        super.onConnected(connectionHint);

        final ResultCallback idCallback = new ResultCallback() {
            @Override
            public void onResult(DriveIdResult result) {
                if (!result.getStatus().isSuccess()) {
                    showMessage("Cannot find DriveId. Are you authorized to view this file?");
                    return;
                }
                DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(), result.getDriveId());
                new EditContentsAsyncTask(EditContentsActivity.this).execute(file);
            }
        };
        Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FILE_ID)
              .setResultCallback(idCallback);
    }

    public class EditContentsAsyncTask extends ApiClientAsyncTask {

        public EditContentsAsyncTask(Context context) {
            super(context);
        }

        @Override
        protected Boolean doInBackgroundConnected(DriveFile... args) {

            //이 부분 쪽을 잘 보면 파일을 업로드 하는 것을 알 수 있을 것이다.
            DriveFile file = args[0];
            try {
                //여기 부분만  알면 될 듯함.  이걸 가지고 나머지 다른 곳에 응용하면 될듯 
                ContentsResult contentsResult = file.openContents(
                        getGoogleApiClient(), DriveFile.MODE_WRITE_ONLY, null).await();

                   
                if (!contentsResult.getStatus().isSuccess()) {
                    return false;
                }

                
                OutputStream outputStream = contentsResult.getContents().getOutputStream();
                outputStream.write("Hello world".getBytes());
                com.google.android.gms.common.api.Status status = file.commitAndCloseContents(
                        getGoogleApiClient(), contentsResult.getContents()).await();
                return status.getStatus().isSuccess();
            } catch (IOException e) {
                Log.e(TAG, "IOException while appending to the output stream", e);
            }
            return false;
        }

        @Override
        protected void onPostExecute(Boolean result) {
            if (!result) {
                showMessage("Error while editing contents");
                return;
            }
            showMessage("Successfully edited contents");
        }
    }
}


반응형
Comments