【发布时间】:2018-10-09 14:21:48
【问题描述】:
我正在尝试使用 GoogleDriveApi 在文件夹中创建一个文件。在我创建文件夹后,我可以直接使用SuccessListener 中的DriveFolder 在里面创建一个文件。但是我不知道以后怎么在里面创建一个File...因为dF.getDriveId().encodeToString()不起作用,所以我以后不能再创建DriveFolder Object了。
创建文件夹:
Drive.getDriveResourceClient(getActivity(), gsa)
.getRootFolder()
.continueWithTask(new Continuation<DriveFolder, Task<DriveFolder>>() {
@Override
public Task<DriveFolder> then(@NonNull Task<DriveFolder> task) throws Exception {
DriveFolder parentFolder = task.getResult();
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("Foo")
.setMimeType(DriveFolder.MIME_TYPE)
.setStarred(true)
.build();
return Drive.getDriveResourceClient(getActivity(), gsa).createFolder(parentFolder, changeSet);
}
})
.addOnSuccessListener(new OnSuccessListener<DriveFolder>() {
@Override
public void onSuccess(DriveFolder dF){
//Here I get the DriverFolder Object.
driveFolder = df;
}
});
创建文件:
final Task<DriveFolder> rootFolderTask = Drive.getDriveResourceClient(getActivity(), gsa).getRootFolder();
final Task<DriveContents> createContentsTask = Drive.getDriveResourceClient(getActivity(), gsa).createContents();
Tasks.whenAll(rootFolderTask, createContentsTask)
.continueWithTask(new Continuation<Void, Task<DriveFile>>() {
@Override
public Task<DriveFile> then(@NonNull Task<Void> task) throws Exception {
DriveContents contents = createContentsTask.getResult();
OutputStream outputStream = contents.getOutputStream();
ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream();
BitmapFactory.decodeFile("path").compress(Bitmap.CompressFormat.PNG, 100, bitmapStream);
try {
outputStream.write(bitmapStream.toByteArray());
} catch (IOException e1) {
Log.i("ERROR", "Unable to write file contents.");
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("Foo.png")
.setMimeType("image/png")
.setStarred(true)
.build();
//use driveFolder from CreateFolder
return Drive.getDriveResourceClient(getActivity(), gsa).createFile(driveFolder, changeSet, contents)
}
});
【问题讨论】:
-
你检查过这个SO post吗?
-
否,但
DriveFolder.createFile已弃用。而且我无法重新创建 DriveFolder 对象,这就是问题所在。
标签: java android google-drive-api google-drive-android-api