diff --git a/api/current.txt b/api/current.txt index 8e380360f8487..fef18c0dc9bec 100644 --- a/api/current.txt +++ b/api/current.txt @@ -23378,7 +23378,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 672f63cae193c..8cbff332d18e8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -25114,7 +25114,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 61d57219d3bd7..a5fbbf8b2b488 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -23446,7 +23446,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 d0ef37c77055c..58681d0da42a5 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; }