【发布时间】:2018-10-18 23:04:55
【问题描述】:
我正在尝试使用 Android 应用程序和 Drive API 以编程方式在驱动器上创建文件,然后创建一个公共链接。我设法制作了文件,但 getWebViewLink、getAlternateLink、getEmbedLink 总是返回 null。我想不通,也没有找到任何有用的文档。
我的代码:
private GoogleSignInClient buildGoogleSignInClient() {
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Drive.SCOPE_APPFOLDER)
.requestServerAuthCode(AUTH_CODE)
.build();
return GoogleSignIn.getClient(this, signInOptions);
}
private void createFile() {
final Task<DriveFolder> rootFolderTask = mDriveResourceClient.getRootFolder();
final Task<DriveContents> createContentsTask = mDriveResourceClient.createContents();
Tasks.whenAll(rootFolderTask, createContentsTask)
.continueWithTask(task -> {
DriveFolder parent = rootFolderTask.getResult();
DriveContents contents = createContentsTask.getResult();
OutputStream outputStream = contents.getOutputStream();
try (Writer writer = new OutputStreamWriter(outputStream)) {
writer.write("Hello World 1!");
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("HelloWorld 1.txt")
.setMimeType("text/plain")
.setStarred(true)
.build();
return mDriveResourceClient.createFile(parent, changeSet, contents);
})
.addOnSuccessListener(this,
driveFile -> {
Log.d(TAG, "file created");
getMetaData(driveFile);
})
.addOnFailureListener(this, e -> {
Log.e(TAG, "Unable to create file", e);
});
}
private void getMetaData(DriveFile driveFile) {
Task<Metadata> metadataTask = mDriveResourceClient.getMetadata(driveFile);
metadataTask
.addOnSuccessListener(this,
metadata -> {
Log.e(TAG, "metadata.getWebViewLink() " + metadata.getWebViewLink());
})
.addOnFailureListener(this, e -> {
Log.d(TAG, "Unable to retrieve metadata", e);
});
}
【问题讨论】:
-
我最终使用了 Google Drive REST API:stackoverflow.com/questions/50513817/…
标签: android api google-drive-api