From 7a7b240c33dcec58e01154eb14b4befb4d223898 Mon Sep 17 00:00:00 2001 From: robinz1x Date: Wed, 4 Jul 2018 16:17:15 +0800 Subject: 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 Signed-off-by: Guobin Zhang --- packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/MtpDocumentsProvider') diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java index 8f254e9735da..a7de631cd6fa 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java @@ -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"); } } -- cgit v1.2.3-59-g8ed1b