我的目标是在用户的驱动器上有一个可以放置文件的文件夹。然后,我的 Android 应用程序应该检测(通过轮询)驱动器上的此文件夹中创建/上传了新文件并下载它。
到目前为止一切顺利。我尝试使用 Google Drive Android API 执行此操作,但我了解到,使用 Google Drive Android API 我只能访问由我的应用程序创建的文件。因此,如果用户通过其他设备(例如台式计算机)将照片放入此文件夹中,我什至看不到该文件,更不用说它是否是新创建的了。
有人告诉我,我可以使用 Google Drive REST API (v3) 来提取自上次查看以来发生的更改。
Drive.Changes.List request = drive.changes().list(startPageToken);
ChangeList changes = request.execute();
这确实有效。但是,我对这种方法存在三个问题:
- 我确实得到了 changes 的列表包含驱动器上更改的所有文件。然而,我没有得到变更集。我不知道到底发生了什么变化。是重命名、创建、移动、删除、内容更改吗?我用谷歌搜索了一下,我似乎是唯一对此感到好奇的人。我怎么知道到底发生了什么变化?
- 正如我所描述的,我想观看单个文件夹。如何仅请求对单个文件夹进行更改?
- 最后:我的应用程序正在使用 native Google Drive Android API。因此,添加此功能后,我突然需要两个 API,而不是一个,尽管我只需要其中一个 API 来完成轮询更改的简单任务。更糟糕的是,理论上用户可以使用一个帐户登录一个 API,然后使用另一个帐户登录另一个 API。这没有任何意义。我获得了大量额外开销,并且关键功能取决于用户使用同一帐户登录两次。这个问题有解决办法吗?
一开始就有两个可用的 Google Drive API,这让我感到非常沮丧。如果你一开始什么都不知道,你就必须深入挖掘才能开始并发现确切的区别。 我仍然不明白其中的区别,也不明白为什么其中一个无法查看不是自己创建的文件。
最佳答案
您可以尝试查看有关 Listening for Change Events 的文档:
You can use change listeners to receive notifications whenever a specified file or folder has changes to its contents or metadata. A change listener implements the
ChangeListener
interface for theChangeEvent
and receives a direct callback from the Drive service to a currently connected client application.
以下示例代码显示了您可能实现的向文件添加更改监听器的逻辑:
DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,
mSelectedFileId);
file.addChangeListener(mGoogleApiClient, changeListener);
In addition to adding the listener to the file or folder you wish to receive events for, your application must also implement the callback (
changeListener
in this example) you passed in theaddChangeListener
method call. The following demonstrates a callback that prints the received events to a log.
/**
* A listener to handle file change events.
*/
final private ChangeListener changeListener = new ChangeListener() {
@Override
public void onChange(ChangeEvent event) {
mLogTextView.setText(String.format("File change event: %s", event));
}
};
对于采取操作的回调,例如检索最新版本,您可以使用 hasContentChanged
和 hasMetadataChanged
确定文件内容、元数据或两者是否已更改的方法。
有关完整的工作示例,请参阅 ListenChangeEventsForFilesActivity样本在 Google Drive Android API Demos app .
您还可以查看此相关问题22980497获取更多信息。
希望对你有帮助!
关于android - Google Drive REST/Android API - 查找云端硬盘文件夹的更改集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39609268/