gpt4 book ai didi

android - Google Drive REST/Android API - 查找驱动器文件夹的更改集

转载 作者:行者123 更新时间:2023-11-29 01:16:04 26 4
gpt4 key购买 nike

我的目标是在用户的驱动器上有一个文件夹,他可以在其中放置文件。然后我的 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();

这确实有效。但是,这种方法存在三个问题:

  1. 我确实得到了 changes 的列表包含驱动器上更改的所有文件。然而,我没有得到一个变更集。我不知道究竟发生了什么变化。是重命名、创建、移动、删除还是内容更改?我用谷歌搜索了一下,似乎只有我一个人对此感到疑惑。我怎么知道到底发生了什么变化?
  2. 正如我所描述的,我想看一个文件夹。我如何才能请求仅对单个文件夹进行更改?
  3. 最后:我的应用程序使用的是原生 Google Drive Android 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 the ChangeEvent 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 the addChangeListener 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));
}
};

对于采取行动的回调,例如检索最新版本,您可以使用 hasContentChangedhasMetadataChanged确定文件内容、元数据或两者是否已更改的方法。

有关完整的工作示例,请参阅 ListenChangeEventsForFilesActivity Google Drive Android API Demos app 中的示例.

你也可以查看这个相关的so问题22980497了解更多信息。

希望对您有所帮助!

关于android - Google Drive REST/Android API - 查找驱动器文件夹的更改集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39609268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com