2012-10-27 14 views
5

Googleドライブにファイルをアップロードし、Androidアプリケーションでアップロードしたファイルを表示/ダウンロードする必要があります。これを行う最も簡単な方法は何ですか?これを行うための提案、サンプルコード、説明が歓迎されます。よろしくお願いします 。GoogleドライブをAndroidアプリに統合しましたか?

PS:Googleドライブでデバイスをインストールしなくても...

答えて

3

最も簡単な方法は、Android quickstart guide for Drive

に従うことです。これは、10分以内にドライブに写真をアップロードAndroidアプリケーションを構築する方法について説明します。

0

(私はまだファイルを参照する方法を考え出すています)にのみアップロードするComplete Step by Step Guide

コード、これを参照してください:

package com.example.drivequickstart; 

import java.io.IOException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

import android.accounts.AccountManager; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.widget.Toast; 

import com.google.api.client.extensions.android.http.AndroidHttp; 
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential; 
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException; 
import com.google.api.client.http.FileContent; 
import com.google.api.client.json.gson.GsonFactory; 
import com.google.api.services.drive.Drive; 
import com.google.api.services.drive.DriveScopes; 
import com.google.api.services.drive.model.File; 

public class MainActivity extends Activity { 
    static final int REQUEST_ACCOUNT_PICKER = 1; 
    static final int REQUEST_AUTHORIZATION = 2; 
    static final int CAPTURE_IMAGE = 3; 

    private static Uri fileUri; 
    private static Drive service; 
    private GoogleAccountCredential credential; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE); 
     startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
     switch (requestCode) { 
     case REQUEST_ACCOUNT_PICKER: 
      if (resultCode == RESULT_OK && data != null && data.getExtras() != null) { 
       String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
       if (accountName != null) { 
        credential.setSelectedAccountName(accountName); 
        service = getDriveService(credential); 
        startCameraIntent(); 
       } 
      } 
      break; 
     case REQUEST_AUTHORIZATION: 
      if (resultCode == Activity.RESULT_OK) { 
       saveFileToDrive(); 
      } else { 
       startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); 
      } 
      break; 
     case CAPTURE_IMAGE: 
      if (resultCode == Activity.RESULT_OK) { 
       saveFileToDrive(); 
      } 
     } 
    } 

    private void startCameraIntent() { 
     String mediaStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath(); 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); 
     fileUri = Uri.fromFile(new java.io.File(mediaStorageDir + java.io.File.separator + "IMG_" + timeStamp + ".jpg")); 

     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     startActivityForResult(cameraIntent, CAPTURE_IMAGE); 
    } 

    private void saveFileToDrive() { 
     Thread t = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        // File's binary content 
        java.io.File fileContent = new java.io.File(fileUri.getPath()); 
        FileContent mediaContent = new FileContent("image/jpeg", fileContent); 

        // File's metadata. 
        File body = new File(); 
        body.setTitle(fileContent.getName()); 
        body.setMimeType("image/jpeg"); 

        File file = service.files().insert(body, mediaContent).execute(); 
        if (file != null) { 
         showToast("Photo uploaded: " + file.getTitle()); 
         startCameraIntent(); 
        } 
       } catch (UserRecoverableAuthIOException e) { 
        startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     t.start(); 
    } 

    private Drive getDriveService(GoogleAccountCredential credential) { 
     return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build(); 
    } 

    public void showToast(final String toast) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 
0

グーグル・ドライブは、サンプルのデモがあり、GoogleドライブのAPIを介してアクセス可能です下のパスでアンドロイドの人々によって作成されています。これは非常に役に立ち、すべての機能のサンプルを提供します。以下のリンクをクリックしてください。 Git hub demo for Google Drive API

関連する問題