Я пытаюсь загрузить данные (изображение или видео) на определенный диск 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();
}
});