我想知道在使用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,
答案 0 :(得分:1)
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:
<DriveId, String>
HashMap。
CompletionEvent
获取DriveId并使用它来查找HashMap中的文件路径。 使用跟踪代码:
setTrackingTag()
将文件路径放在ExecutionOptions跟踪代码中。CompletionEvent
中的跟踪代码,以获取该文件的路径
上传文件。