我正在尝试使用新的Google云端硬盘Android API来确定如何检查Google云端硬盘中是否存在文件夹
我已经尝试了以下内容,认为如果找不到文件夹它会崩溃或返回null,但它不会这样做(只要它是有效的DriveId,即使文件夹已被删除).
DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), driveId));
Run Code Online (Sandbox Code Playgroud)
如果我尝试创建一个文件,我从上面的代码中得到的文件夹,它也不会崩溃?我显然很难理解这个新API是如何一起工作的,尤其是那些非常有限的教程和SO问题,我真的坚持这个,所以任何输入都将非常感激.
只是为了澄清我的问题:我在指定的Google云端硬盘文件夹中创建了一个文件,但如果该文件夹不存在(已被用户删除),我想先创建它.
更新(2015年5月):
"垃圾"功能已在GDAA中实施,使下面的问题无关紧要.
原始问题:
当我使用新的"Google Drive Android API"(GDAA)时,我遇到了一些我无法弄清楚的差异.基本上,我有一个使用"com.google.api.services.drive"界面(插入,补丁,更新)的旧应用程序,我很乐意将其移植到GDAA.
首先,GDAA与drive.google.com网络应用.
使用旧服务,我使用了DriveScopes.DRIVE_FILE范围,因此我假设了类似的行为/结果.使用旧的"DriveScopes.DRIVE_FILE"创建的文件可以由我("驱动程序所有者")在" https://drive.google.com "中删除(我假设我的范围是DRIVE那里),后续的Android应用查询将无法找到他们.它表现得像我期望的那样:
使用新的GDAA,它似乎不起作用.这让我想到了第二点:
DELETE/TRASH功能.
我试图测试CRUD功能,根本找不到DELETE(再次,它可能是我的无知/短视).从"drive.google.com"中删除它们会让它们在那里隐身,但Android应用仍会看到它们.元数据可以查询"isTrashed()",但"MetadataChangeSet.Builder"中没有任何内容可以让我删除/删除它们,只有setMimeType(),setStarred(),setTitle().
我迷路了,请帮忙.
在测试SO 22295903中讨论的删除,垃圾功能时,我遇到了这个问题.
1 /创建包含内容的文件
GoogleApiClient _gac;
DriveFile createFileWait(DriveFolder fldr, String name, String mime, byte[] buff) {
DriveFile drvFile = null;
try {
ContentsResult rslt = Drive.DriveApi.newContents(_gac).await();
if (rslt.getStatus().isSuccess()) {
Contents cont = rslt.getContents();
cont.getOutputStream().write(buff);
MetadataChangeSet meta = (mime == null) ?
new MetadataChangeSet.Builder().setTitle(name).build() :
new MetadataChangeSet.Builder().setTitle(name).setMimeType(mime).build();
drvFile = fldr.createFile(_gac, meta, cont).await().getDriveFile();
}
} catch (Exception e) {}
return drvFile;
}
Run Code Online (Sandbox Code Playgroud)
2 /使用查询检索文件(它的标题):
ArrayList<DriveId> findAll(String title, String mime, DriveFolder fldr) {
ArrayList<DriveId> dIDs = null;
if (isConnected()) …Run Code Online (Sandbox Code Playgroud) 我的应用设置为允许将备份保存到Google云端硬盘应用数据文件夹.它在同一台设备上运行良好.当我进行备份时,删除应用程序的数据,然后恢复所有工作.
但是,当我尝试在一台设备上进行备份,然后安装在另一台设备上并尝试恢复时,找不到任何文件.当我在原始设备上卸载应用程序,在同一设备上重新安装并尝试还原时,也是如此.这两种情况都导致没有找到文件,尽管我在登录Google云端硬盘时看到appdata文件夹中有文件.
我在某处读过你必须使用RESOURCE_ID而不是文件的DRIVE_ID才能在设备之间工作,因为DRIVE_ID会因设备而异.但是,我看到如何获取RESOURCE_ID的唯一方法是使用driveId.getResourceId(),我无法从其他设备获取正确的DRIVE_ID.
tl; dr:我该如何从另一台设备/安装创建的appdata文件夹中检索正确的文件?
我是Google Drive Android API的新手,我正在学习它.但我遇到的问题是我无法使用Google Drive Android API删除文件,但没有一个例子.anybood可以帮我解决这个问题吗?非常感谢.
java android google-api google-drive-api google-drive-android-api