Use getCompressedSizeLong to get correct size for 2G file
The MtpObjectInfo#getCompressedSize() returns the value in Java int (signed 32-bit integer), so when the MtpObject size is larger than 2^31-1, use getCompressedSize() will encounter the IllegalStateException error. Use getCompressedSizeLong() instead of getCompressedSize() can get the correct size. Test: manual - connect Android device to Android Automotive Test: manual - select MTP/File Transfer in android device Test: manual - copy a file which is bigger than 2GB from automotive to the android device. bug: 115451170 Change-Id: Idb3529b6d6e8588c59d18aad1eae9c46df2e6fe0 Signed-off-by: robinz1x <robinx.zhang@intel.com> Signed-off-by: Guobin Zhang <guobin.zhang@intel.com>
This commit is contained in:
@@ -200,7 +200,7 @@ class MtpManager {
|
||||
}
|
||||
if (objectInfo.getFormat() != MtpConstants.FORMAT_ASSOCIATION) {
|
||||
if (!device.sendObject(sendObjectInfoResult.getObjectHandle(),
|
||||
sendObjectInfoResult.getCompressedSize(), source)) {
|
||||
sendObjectInfoResult.getCompressedSizeLong(), source)) {
|
||||
throw new IOException("Failed to send contents of a document");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user