我的目标是在用户的驱动器上放置一个文件夹,用于放置文件。然后,我的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();
这确实有效。但是,我对这种方法有三个问题:
我觉得非常令人沮丧的是,有两个Google Drive API可供开始使用。如果你最初什么都不知道的话,你必须深入挖掘甚至开始并发现确切的差异。 我仍然没有区别,或者为什么其中一个人无法看到自己创建的文件。
答案 0 :(得分:1)
您可以尝试查看有关Listening for Change Events的文档:
只要指定的文件或文件夹对其内容或元数据进行了更改,您就可以使用更改侦听器接收通知。更改侦听器实现
ChangeListener
的ChangeEvent
接口,并从Drive服务接收直接回调到当前连接的客户端应用程序。
以下示例代码显示了您可以实现的更改侦听器添加到文件的逻辑:
DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,
mSelectedFileId);
file.addChangeListener(mGoogleApiClient, changeListener);
除了将侦听器添加到您希望接收事件的文件或文件夹之外,您的应用程序还必须实现您传入的回调(在此示例中为
changeListener
) strong>addChangeListener
方法调用。下面演示了一个回调函数,它将接收到的事件打印到日志中。
/**
* 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以获取更多信息。
希望它有所帮助!