diff --git a/api/current.txt b/api/current.txt index 12fa844d78bd8..83cbd7a8345a8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13916,6 +13916,7 @@ package android.os { method public int describeContents(); method public int detachFd(); method public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor) throws java.io.IOException; + method public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket); method public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket); method public int getFd(); method public java.io.FileDescriptor getFileDescriptor(); diff --git a/core/java/android/os/ParcelFileDescriptor.java b/core/java/android/os/ParcelFileDescriptor.java index f7661b61f5394..727fcca019d35 100644 --- a/core/java/android/os/ParcelFileDescriptor.java +++ b/core/java/android/os/ParcelFileDescriptor.java @@ -21,6 +21,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.net.DatagramSocket; import java.net.Socket; /** @@ -141,6 +142,20 @@ public class ParcelFileDescriptor implements Parcelable { return fd != null ? new ParcelFileDescriptor(fd) : null; } + /** + * Create a new ParcelFileDescriptor from the specified DatagramSocket. + * + * @param datagramSocket The DatagramSocket whose FileDescriptor is used + * to create a new ParcelFileDescriptor. + * + * @return A new ParcelFileDescriptor with the FileDescriptor of the + * specified DatagramSocket. + */ + public static ParcelFileDescriptor fromDatagramSocket(DatagramSocket datagramSocket) { + FileDescriptor fd = datagramSocket.getFileDescriptor$(); + return fd != null ? new ParcelFileDescriptor(fd) : null; + } + /** * Create two ParcelFileDescriptors structured as a data pipe. The first * ParcelFileDescriptor in the returned array is the read side; the second