谷歌驱动器作为Android服务

时间:2013-01-31 10:40:33

标签: android google-drive-api

我正在尝试通过谷歌驱动器中的某些服务将一些文件上传到谷歌驱动器,从我的应用程序的多个用户上传到特定的谷歌帐户。我该怎么做。

private void UploadToDrive(final String  filename){
     final GoogleAccountCredential credential;
     credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);

     Thread t = new Thread(new Runnable() {
          @Override
          public void run() {
             Drive service = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential)
             .build();
             try {
              // File's binary content
              java.io.File fileContent = new java.io.File(filename);
              FileContent mediaContent = new FileContent("application/xml", fileContent);
              com.google.api.services.drive.model.File body = new com.google.api.services.drive.model.File();
              body.setTitle(fileContent.getName());
              body.setMimeType("application/xml");
            //  Log.v("GoogleVideo1",fileUri.getPath());    
              com.google.api.services.drive.model.File file = service.files().insert(body, mediaContent).execute();
         //     Log.v("GoogleVideo2",fileUri.getPath());
              if (file != null) {
              //  showToast("Photo uploaded: " + file.getTitle());
           //     startCameraIntent();
              }
            } catch (UserRecoverableAuthIOException e) {
                Log.v(TAG,"rECOVERABLE AUTH");
                e.printStackTrace();
//            startActivityForResult(e.getIntent(), 1);
            } catch (IOException e) {
             // Log.e("GoogleVideo",fileUri.getPath());
              System.out.println("HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII");
              e.printStackTrace();
            }
          }
        });
        t.start();

 }

但是当我执行服务的execute()时,我得到了这个错误:

01-31 16:03:17.975: I/dalvikvm(23567): Could not find method com.google.android.gms.auth.GoogleAuthUtil.invalidateToken, referenced from method com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.handleResponse
01-31 16:03:17.975: W/dalvikvm(23567): VFY: unable to resolve static method 1536: Lcom/google/android/gms/auth/GoogleAuthUtil;.invalidateToken (Landroid/content/Context;Ljava/lang/String;)V
01-31 16:03:17.975: D/dalvikvm(23567): VFY: replacing opcode 0x71 at 0x0015
01-31 16:03:17.975: W/dalvikvm(23567): VFY: unable to resolve exception class 143 (Lcom/google/android/gms/auth/GooglePlayServicesAvailabilityException;)
01-31 16:03:17.975: W/dalvikvm(23567): VFY: unable to find exception handler at addr 0x25
01-31 16:03:17.975: W/dalvikvm(23567): VFY:  rejected Lcom/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential$RequestHandler;.intercept (Lcom/google/api/client/http/HttpRequest;)V
01-31 16:03:17.975: W/dalvikvm(23567): VFY:  rejecting opcode 0x0d at 0x0025
01-31 16:03:17.980: W/dalvikvm(23567): VFY:  rejected Lcom/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential$RequestHandler;.intercept (Lcom/google/api/client/http/HttpRequest;)V
01-31 16:03:17.980: W/dalvikvm(23567): Verifier rejected class Lcom/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential$RequestHandler;
01-31 16:03:17.980: W/dalvikvm(23567): threadid=11: thread exiting with uncaught exception (group=0x40fc92a0)
01-31 16:03:17.995: E/AndroidRuntime(23567): FATAL EXCEPTION: Thread-2472
01-31 16:03:17.995: E/AndroidRuntime(23567): java.lang.VerifyError: com/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential$RequestHandler
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.initialize(GoogleAccountCredential.java:124)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:109)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:404)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:328)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:449)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at com.example.googledrivetest.LocationService$1.run(LocationService.java:183)
01-31 16:03:17.995: E/AndroidRuntime(23567):    at java.lang.Thread.run(Thread.java:856)
01-31 16:03:18.025: I/Process(23567): Sending signal. PID: 23567 SIG: 9

2 个答案:

答案 0 :(得分:1)

对我来说,看起来您运行示例代码所需的依赖项存在问题:

01-31 16:03:17.975: I/dalvikvm(23567): Could not find method com.google.android.gms.auth.GoogleAuthUtil.invalidateToken, referenced from method com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.handleResponse

您是否包含了所有必需的依赖项? Google云端硬盘快速入门页面显示您需要将google-play-services.jar作为依赖项https://developers.google.com/drive/quickstart-android#step_3_create_and_configure_an_android_project

答案 1 :(得分:0)

  • 您需要将google-play-service 库项目(不仅仅是jar)作为依赖项

AND

  • 在google-play-services项目中,将lib/google-play-services.jar添加到构建路径。
  • 导出那个罐子。右键单击>构建路径>配置构建路径...订单和导出选项卡>查看google-play-services.jar
  • 清理两个项目

启动你的项目,它现在应该没问题。