libaums
libaums copied to clipboard
UsbDocumentProvider returns null for mode "w"
Problem
UsbDocumentProvider.openDocument always falls back to "return null" statement for any documents opened in mode "w", see https://github.com/magnusja/libaums/blob/master/storageprovider/src/main/java/com/github/mjdev/libaums/storageprovider/UsbDocumentProvider.java#L191 ParcelFileDescriptor.parseMode never returns exact ParcelFileDescriptor.MODE_WRITE_ONLY value. On older Android versions it returns at least ParcelFileDescriptor.MODE_WRITE_ONLY | ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_TRUNCATE, see https://android.googlesource.com/platform/frameworks/base/+/5ada87388cee24458bc0b8c960237c0e9f700242/core/java/android/os/ParcelFileDescriptor.java#565 On newer Android versions it returns at least MODE_WRITE_ONLY | MODE_CREATE, see https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/ParcelFileDescriptor.java#606 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/FileUtils.java#1304 and https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/FileUtils.java#1359
Most probably bit-wise OR in condition "if ((accessMode | ParcelFileDescriptor.MODE_WRITE_ONLY) == ParcelFileDescriptor.MODE_WRITE_ONLY)" should be changed to bit-wise AND.
Expected behavior
UsbDocumentProvider.openDocument returns valid ParcelFileDescriptor backed by UsbFileOutputStream for documents opened with mode "w".
Actual behavior
UsbDocumentProvider.openDocument returns null for documents opened with mode "w".
Hello there,
seems you know what you are talking about! Would you be so kind to open a PR to fix aforementioned issues with writing mode?
Thanks