如何知道DriveEventService中onCompletion成功上传了哪个文件(文件名,路径...)

时间:2014-10-13 09:17:10

标签: google-drive-api

我想知道在使用onCompletion调用DriveEventService之后fileCallback createFile成功上传了哪个文件(文件名,信息等)。< / p>

现在,我无法将fileCallback中的driveID与onCompletion DriveEventService中的driveID相关联。我该怎么办? 感谢。

这两个回调中的驱动器ID不同:

10-13 16:39:12.879 20895 20895 I gerald1111: onResume

10-13 16:39:12.889 20895 20895 I gerald1111: connect start

10-13 16:39:12.899 20895 20895 I gerald1111: connect start end

10-13 16:39:13.389 20895 20895 I gerald1111: GoogleApiClient connected

10-13 16:39:14.059 20895 20895 I gerald1111: createFile: createfile start

10-13 16:39:14.769 20895 20895 I gerald1111: Created a file: DriveId:CAESABjmDSCAooG5p1E=

10-13 16:39:17.749 20895 21373 I gerald1111: Commit completed successfully: DriveId:CAESHDBCLVhkeGJ4eXBhQ01TMjV3YzA4MFQy
OUtNR00Y5g0ggKKBuadR,

1 个答案:

答案 0 :(得分:1)

Android API中的

ID

DriveIds 本地唯一对象。 Drive Android API中使用的主要ID。即使尚未上传资源,也可以通过getDriveId()创建资源。

ResourceIds: 全球唯一字符串。 Drive Web API中使用的主要ID(也称为fileId)。只有>文件通过getResourceId()上传到服务器后才可用(如果文件尚未上传,则返回null)。您可以使用fetchDriveId()获取给定resourceId的DriveId。

警告!如果清除Google Play服务数据,则持久的DriveIds将失效。 ResourceIds应该用于长期参考。

比较

DriveIds应始终equals()进行比较。

encodeToString()返回的DriveId的字符串表示形式会根据resourceId是否可用而更改。如果您持久保存字符串表示形式,则可以使用decodeFromString()将其转换回DriveId以进行比较。

警告! toString()无法保证返回与encodeToString相同的结果,也不应用于持久性。

可以使用字符串比较来比较ResourceIds,但如上所述,它们仅在文件上传后才可用。

将完成事件与本地文件匹配

以下两个选项可用于确定在收到CompletionEvent时已上传的本地文件:

使用HashMaps:

  1. 创建文件后,将DriveId和文件路径添加到<DriveId, String> HashMap。
    • 警告!如上所述,请确保使用DriveId对象,而不是可能更改的encodeToString表示。
  2. CompletionEvent获取DriveId并使用它来查找HashMap中的文件路径。
  3. 使用跟踪代码:

    1. 创建文件时,请使用setTrackingTag()将文件路径放在ExecutionOptions跟踪代码中。
    2. 检查CompletionEvent中的跟踪代码,以获取该文件的路径 上传文件。