gpt4 book ai didi

android - 使用 GoogleDriveApi 创建或打开 native Google 文档

转载 作者:行者123 更新时间:2023-11-30 03:01:06 26 4
gpt4 key购买 nike

我一直在密切关注 Google Drive Android API 的文档而且,一切都很好。我可以创建新的文本文档并使用 text/plain 的 mime 类型读回它们。

我不能做的是创建原生的 Google“文档”或“电子表格”。实际上,我可以根据 Supported MIME Types 使用 application/vnd.google-apps.documentapplication/vnd.google-apps.spreadsheet 的 mime 类型来创建它们。文档。

但是,如果我尝试向这些文档写入内容,则文档永远不会上传。如果我尝试阅读包含内容(我通过网络浏览器创建的内容)的文档,我的 openContents 调用会失败。

同样,我可以创建 text/plain 文档并写入它们,但它们不是原生的 Google 文档。我搜索了文档和示例文件,但没有任何内容描述我正在寻找的内容。

这看起来很基础。新的 GoogleApiClient 不支持这样做吗?我错过了什么或做错了什么?

这里是创建的核心代码。我在尝试阅读 application/vnd.google-apps.document 时遇到了类似的问题,但我确信这两个问题是相关的。我将省去“阅读”代码的冗长。

private void exportToGDriveFile() {
Drive.DriveApi.newContents(getGoogleApiClient()).setResultCallback(createNewFileCallback);
}



final private ResultCallback<ContentsResult> createNewFileCallback = new ResultCallback<ContentsResult>() {

@Override
public void onResult(ContentsResult result) {

if (!result.getStatus().isSuccess()) {
writeLog("Error while trying to create new file contents");
return;
}

String fileName = getIncrementedFileName();
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle(fileName)
.setMimeType("text/plain") // <-- This works! I can write and read back :)
//.setMimeType("application/vnd.google-apps.document") <-- can create if no contents are included.
//.setMimeType("application/vnd.google-apps.spreadsheet")
.setStarred(true)
.build();

writeLog("creating file: " + fileName);

// create a file on root folder
Drive.DriveApi.getRootFolder(getGoogleApiClient())
.createFile(getGoogleApiClient(), changeSet, result.getContents())
.setResultCallback(afterCreateFileCallback);
}
};



private ResultCallback<DriveFileResult> afterCreateFileCallback = new ResultCallback<DriveFileResult>() {

@Override
public void onResult(DriveFileResult result) {

if (!result.getStatus().isSuccess()) {
writeLog("Error while trying to create the file");
return;
}

DriveFile driveFile = result.getDriveFile();
writeLog("Created file " + driveFile.getDriveId());
new WriteFileAsyncTask().execute(driveFile);

}
};

private class WriteFileAsyncTask extends AsyncTask<DriveFile, Void, Boolean> {

@Override
protected Boolean doInBackground(DriveFile... args) {

DriveFile file = args[0];
try {


ContentsResult contentsResult = file.openContents(getGoogleApiClient(), DriveFile.MODE_WRITE_ONLY, null).await();
if (!contentsResult.getStatus().isSuccess()) {
return false;
}


/************************
If I try to write content here, `application/vnd.google-apps.document` files will not upload.
*************************/

String contents = "Hello World";

OutputStream outputStream = contentsResult.getContents().getOutputStream();
outputStream.write(contents.getBytes());
com.google.android.gms.common.api.Status status = file.commitAndCloseContents(
getGoogleApiClient(), contentsResult.getContents()).await();
return status.getStatus().isSuccess();
} catch (IOException e) {
// toast("IOException while appending to the output stream");
}

return false;
}

@Override
protected void onPostExecute(Boolean result) {

if (!result) {
// toast("Error while editing contents");
return;
}
// toast("Successfully uploaded Quizifications!");
}

}

最佳答案

目前无法阅读或编辑 Google 文档、电子表格或演示文稿文件的内容。它们的文件属于特殊类型,没有标准的二进制内容,因此您无法像读取其他文件那样读取和写入它们。

但是,您可以与现有文件的元数据进行交互。

对于造成的困惑,我们深表歉意,我们应该更新行为,以明确这是不可能的。

关于android - 使用 GoogleDriveApi 创建或打开 native Google 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com