Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID

问题描述 投票:0回答:1

我已经实现了Google Drive Rest API,但它仅适用于一个gmail ID,不适用于其他gmail ID。

以我的荣誉4x,我正在使用我的一个gmail ID,并且能够将sqllite数据库成功上传并下载到Google驱动器。

当我在具有不同gmail ID的其他设备上安装应用程序时,我无法将sqllite DB上传到那里的Google驱动器。

下面是我的上传文件方法。对于其他设备,它将添加addOnFailureListener。

private void uploadFile() {

        mDriveServiceHelper.searchFile("cue_cards_db","application/x-sqlite-3")
                   .continueWithTask(new Continuation<GoogleDriveFileHolder, Task<Void>>(){
                       @Override
                       public Task<Void> then(@NonNull Task<GoogleDriveFileHolder> task) throws Exception {
                           return mDriveServiceHelper.deleteFolderFile(task.getResult().getId());
                       }
                   });


       if (mDriveServiceHelper != null) {
           Log.d(TAG, "Upload Creating a file.");

           mDriveServiceHelper.uploadFile(DATA_DIRECTORY_DATABASE,"application/x-sqlite-3",null)
                   .addOnSuccessListener(new OnSuccessListener<GoogleDriveFileHolder>() {
                       @Override
                       public void onSuccess(GoogleDriveFileHolder googleDriveFileHolder) {
                           Gson gson = new Gson();
                           Log.d(TAG, " >>>>>>>>> onSuccess: " + gson.toJson(googleDriveFileHolder));
                       }
                   })
                   .addOnFailureListener(new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           Log.d(TAG, ">>>>>>>> onFailure: " + e.getMessage());
                       }
                   });
       }
   }

上方uploadfile()方法正在调用以下uploadFile方法。我已将Sop放入以下方法中,并观察到其他设备或gmail ID不在代码行下方执行。

File fileMeta = mDriveService.files().create(metadata, fileContent).execute();

public Task<GoogleDriveFileHolder> uploadFile(final java.io.File localFile, final String mimeType, @Nullable final String folderId) {
     return Tasks.call(mExecutor, new Callable<GoogleDriveFileHolder>() {
         @Override
         public GoogleDriveFileHolder call() throws Exception {
             // Retrieve the metadata as a File object.

             List<String> root;
             if (folderId == null) {
                 root = Collections.singletonList("root");
             } else {

                 root = Collections.singletonList(folderId);
             }

             File metadata = new File()
                     .setParents(root)
                     .setMimeType(mimeType)
                     .setName(localFile.getName());

             FileContent fileContent = new FileContent(mimeType, localFile);
             System.out.println(">>>>>>>>>>>> fileContent >>>>>>>>>>>>> "+fileContent);
             System.out.println(">>>>>>>>>>>> mDriveService >>>>>>>>>>>>> "+mDriveService.getApplicationName());

             File fileMeta = mDriveService.files().create(metadata, fileContent).execute();
             System.out.println(">>>>>> fileMeta ID>>>>>>> "+fileMeta.getId());
             GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
             googleDriveFileHolder.setId(fileMeta.getId());
             googleDriveFileHolder.setName(fileMeta.getName());

             System.out.println(">>>>>> googleDriveFileHolder value >>>>>>> "+googleDriveFileHolder);
             return googleDriveFileHolder;
         }
     });
 }

我想在所有设备上执行上传和下载。

android android-studio google-drive-api google-drive-android-api
1个回答
0
投票

有人有解决方案吗?我也面临着同样的问题

© www.soinside.com 2019 - 2024. All rights reserved.