私が開発している Android アプリは、Google ドライブと統合されています。ドライブにファイルをコピーする機能があり、次のコードを使用します。
File newFile = new File();
newFile.setTitle(mItem.GetName());
ParentReference newParent = new ParentReference();
newParent.setId(gDriveFolder.getFileId());
List<ParentReference> parents = new ArrayList<ParentReference>(1);
parents.add(newParent);
newFile.setParents(parents);
File copiedFile = service.files().copy(mItem.getFileId(), newFile).execute();
String copiedFileId = copiedFile.getId();
long copiedModDate = copiedFile.getModifiedDate().getValue();
Log.d("serverSideCopyMove", "File returned from copy command has modified date of " + copiedModDate);
// bug here in google drive because the last mod date returned from the above
// gets changed a few micro-seconds later, thus the need to make a separate
// server call to get new mod date again
File getFile = service.files().get(copiedFileId).execute();
copiedModDate = getFile.getModifiedDate().getValue(); //why different value?
Log.d("serverSideCopyMove", "Separate call to get same copied file returns modified date of " + copiedModDate);
// end of workaround
私のコードからわかるように、copy コマンドから返されたファイルの変更日は、同じファイルに対して「get」を実行した場合とは異なります。これはバグなのか、それとも呼び出しを間違って使用しているのかと思っていました。