загрузить данные в определенный аккаунт Google Drive - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь загрузить данные (изображение или видео) на определенный диск Google.Я хочу, чтобы пользователи моего приложения выполнили вход в свою учетную запись Google, затем выберите конкретный файл из Документов и затем загрузили файл на определенный диск Google (не для пользователей Google Диска)

ЧтоЯ уже сделал?

До сих пор мое приложение работает нормально.пользователь вошел в систему с помощью учетной записи Google и выбирает файл.Но этот файл отправляется на их Google Drive.Я искал Загрузить данные на другой диск Google с помощью API Google Drive, но не нашел ничего полезного.

Чего я хочу достичь?

Я хочу, когда пользователь загружает данные(Видео) это идет к определенному Google Drive.У меня есть App_Key на Google Диске, на который я хочу загрузить данные.

Мой код для входа и загрузки данных прилагается.

Спасибо.

Код входа

GoogleSignInClient googleSignInClient = buildGoogleSignInClient();
startActivityForResult(googleSignInClient.getSignInIntent(), REQUEST_CODE);

private GoogleSignInClient buildGoogleSignInClient() {
    GoogleSignInOptions signInOptions = new GoogleSignInOptions
              .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
              .requestScopes(Drive.SCOPE_FILE)
              .build();
          return GoogleSignIn.getClient(this, signInOptions);
    }

Загрузить файл, используя это:

    final Task<DriveFolder> rootFolderTask = mDriveResourceClient.getRootFolder();
    final Task<DriveContents> createContentsTask = mDriveResourceClient.createContents();
    Tasks.whenAll(rootFolderTask, createContentsTask)
            .continueWithTask(new Continuation<Void, Task<DriveFile>>() {
                @Override
                public Task<DriveFile> then(@NonNull Task<Void> task) throws Exception {
                    DriveFolder parent = rootFolderTask.getResult();
                    DriveContents contents = createContentsTask.getResult();
                    File file = new File(uri.toString());
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    byte[] buf = new byte[1024];
                    FileInputStream fis = new FileInputStream(file);
                    for (int readNum; (readNum = fis.read(buf)) != -1;) {
                        baos.write(buf, 0, readNum);
                    }
                    OutputStream outputStream = contents.getOutputStream();
                    outputStream.write(baos.toByteArray());

                    MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                            .setTitle("MyVideo.mp4") // Provide you video name here
                            .setMimeType("video/mp4") // Provide you video type here
                            .build();

                    return mDriveResourceClient.createFile(parent, changeSet, contents);
                }
            })
            .addOnSuccessListener(this,
                    new OnSuccessListener<DriveFile>() {
                        @Override
                        public void onSuccess(DriveFile driveFile) {
                            Toast.makeText(MainActivity.this, "Upload Started", Toast.LENGTH_SHORT).show();
                        }
                    })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.e(TAG, "Unable to create file", e);
                    Toast.makeText(MainActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

1 Ответ

0 голосов
/ 24 сентября 2018

Если вы хотите отправить его в другую учетную запись Google Drive, я думаю, что вы можете использовать это Командные диски Google

Team Drives - это общее пространство, где команды могут легко хранить, искать и получать доступ к своим файлам в любом месте, с любого устройства. Затем вы можете добавить пользователя, который в настоящее время вошел в систему как часть вашей команды.Затем они могут поделиться и загрузить на этот конкретный диск команды.

Надеюсь, это поможет.

...