diff --git a/api/current.txt b/api/current.txt index 807dfddfade93..c960ad92f7c70 100644 --- a/api/current.txt +++ b/api/current.txt @@ -23363,7 +23363,7 @@ package android.mtp { method public boolean importFile(int, java.lang.String); method public boolean importFile(int, android.os.ParcelFileDescriptor); method public boolean open(android.hardware.usb.UsbDeviceConnection); - method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal); + method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal) throws java.io.IOException; method public boolean sendObject(int, long, android.os.ParcelFileDescriptor); method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo); } diff --git a/api/system-current.txt b/api/system-current.txt index ee5a49ebd8a1d..e5a88cc139dea 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -25099,7 +25099,7 @@ package android.mtp { method public boolean importFile(int, java.lang.String); method public boolean importFile(int, android.os.ParcelFileDescriptor); method public boolean open(android.hardware.usb.UsbDeviceConnection); - method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal); + method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal) throws java.io.IOException; method public boolean sendObject(int, long, android.os.ParcelFileDescriptor); method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo); } diff --git a/api/test-current.txt b/api/test-current.txt index 3e61d201d0587..abe91bc3e603c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -23431,7 +23431,7 @@ package android.mtp { method public boolean importFile(int, java.lang.String); method public boolean importFile(int, android.os.ParcelFileDescriptor); method public boolean open(android.hardware.usb.UsbDeviceConnection); - method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal); + method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal) throws java.io.IOException; method public boolean sendObject(int, long, android.os.ParcelFileDescriptor); method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo); } diff --git a/media/java/android/mtp/MtpDevice.java b/media/java/android/mtp/MtpDevice.java index a1fba823a7bd5..4082778986c62 100644 --- a/media/java/android/mtp/MtpDevice.java +++ b/media/java/android/mtp/MtpDevice.java @@ -16,6 +16,8 @@ package android.mtp; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.os.CancellationSignal; @@ -329,13 +331,11 @@ public final class MtpDevice { * * @param signal signal for cancellation * @return obtained event + * @throws IOException */ - public MtpEvent readEvent(CancellationSignal signal) { + public @NonNull MtpEvent readEvent(@Nullable CancellationSignal signal) throws IOException { final int handle = native_submit_event_request(); - - if (handle < 0) { - throw new IllegalStateException("Other thread is reading an event."); - } + Preconditions.checkState(handle >= 0, "Other thread is reading an event."); if (signal != null) { signal.setOnCancelListener(new CancellationSignal.OnCancelListener() { @@ -391,8 +391,8 @@ public final class MtpDevice { private native boolean native_import_file(int objectHandle, int fd); private native boolean native_send_object(int objectHandle, long size, int fd); private native MtpObjectInfo native_send_object_info(MtpObjectInfo info); - private native int native_submit_event_request(); - private native MtpEvent native_reap_event_request(int handle); + private native int native_submit_event_request() throws IOException; + private native MtpEvent native_reap_event_request(int handle) throws IOException; private native void native_discard_event_request(int handle); private native long native_get_object_size_long(int handle, int format) throws IOException; }