我的应用程序要求用户选择一个 Google Drive 文件夹,以便以后可以将文件保存到选定的文件夹中。
到目前为止,它使用 Google Drive Android API 的文件夹选择器 UI,但现在已弃用并关闭。迁移说明建议使用存储访问框架(又名 SAF)来替换以前可用的文件选取器 UI。
问题是,当我尝试使用 ACTION_OPEN_DOCUMENT_TREE 操作启动 SAF UI 时,Google Drive 没有显示。另一个 Stackoverflow 帖子表明SAF不支持选择 Google Drive 文件夹,这很奇怪,因为它是一个非常重要和基本的功能。
有什么方法可以为 Google Drive 实现文件夹选择器 UI,而不必自己从头开始构建它?
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, 3);
Run Code Online (Sandbox Code Playgroud) android google-drive-api storage-access-framework google-drive-android-api google-drive-picker
我的 Google 云端硬盘中有两个扩展名为 .ipynb 的文件,但其中一个被标记为未知文件类型并具有蓝色图标。我该如何将第二个文件更改为 Colaboratory 文件?

给定 Drive 中带有(任意)扩展名 *.abc 的文件,此代码...
gapi.load("picker", { "callback": function () {
if (!picker) {
var view = new google.picker.DocsView(google.picker.ViewId.DOCS);
view.setMimeTypes("application/vnd.google.drive.ext-type.abc");
view.setMode(google.picker.DocsViewMode.LIST);
picker = new google.picker.PickerBuilder();
picker.setTitle(TEXT.PICKER_PROMPT);
picker.setAppId(CONST.APP_ID);
picker.addView(view);
picker.setOAuthToken(session.OAuthToken.access_token);
picker.setCallback(pickerCallback);
picker.setInitialView(view);
};
picker.build().setVisible(true);
));
Run Code Online (Sandbox Code Playgroud)
...在驱动器中找不到任何现有的“abc”文件。这些文件是 mime 类型 text/xml,以下行确实可以找到它们:
view.setMimeTypes("text/xml");
Run Code Online (Sandbox Code Playgroud)
为什么按扩展名搜索不起作用?
我正在尝试使用 Google Drive 文件选择器下载文件(基于此示例https://gist.github.com/Daniel15/5994054)。文件选择器在下载文件时工作良好。它遇到 400 Bad-Request (lockedDomainCreationFailure) 错误。
这是代码:
function downloadFile(file, callback) {
if (file.downloadUrl) {
var accessToken = gapi.auth.getToken().access_token;
var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.onload = function() {
callback(xhr.responseText);
};
xhr.onerror = function() {
callback(null);
};
xhr.send();
} else {
callback(null);
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "lockedDomainCreationFailure",
"message": "The OAuth token was received in the query string, which this API forbids for response …Run Code Online (Sandbox Code Playgroud) javascript google-api oauth-2.0 google-drive-api google-drive-picker