From 0f9b6171f126692533c10d360b71523211dc0c39 Mon Sep 17 00:00:00 2001 From: allenwtsu Date: Wed, 31 Mar 2021 14:51:33 +0800 Subject: [PATCH] Change SipMessage API name Bug: 184018068 Test: atest Change-Id: I1c1dbfbcbacadf9bdd07b9b8cd85e8ffda9ac0b3 --- core/api/system-current.txt | 3 ++- .../android/telephony/ims/SipMessage.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index e6624cdb865a4..eebf2831eafca 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -11985,10 +11985,11 @@ package android.telephony.ims { method public int describeContents(); method @Nullable public String getCallIdParameter(); method @NonNull public byte[] getContent(); - method @NonNull public byte[] getEncodedMessage(); + method @Deprecated @NonNull public byte[] getEncodedMessage(); method @NonNull public String getHeaderSection(); method @NonNull public String getStartLine(); method @NonNull public String getViaBranchParameter(); + method @NonNull public byte[] toEncodedMessage(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; } diff --git a/telephony/java/android/telephony/ims/SipMessage.java b/telephony/java/android/telephony/ims/SipMessage.java index b5295637d4dd6..d21fcab264d34 100644 --- a/telephony/java/android/telephony/ims/SipMessage.java +++ b/telephony/java/android/telephony/ims/SipMessage.java @@ -204,7 +204,9 @@ public final class SipMessage implements Parcelable { /** * @return the UTF-8 encoded SIP message. + * @deprecated Use {@link #toEncodedMessage} instead */ + @Deprecated public @NonNull byte[] getEncodedMessage() { byte[] header = new StringBuilder() .append(mStartLine) @@ -216,4 +218,26 @@ public final class SipMessage implements Parcelable { System.arraycopy(mContent, 0, sipMessage, header.length, mContent.length); return sipMessage; } + + /** + * According RFC-3261 section 7, SIP is a text protocol and uses the UTF-8 charset. Its format + * consists of a start-line, one or more header fields, an empty line indicating the end of the + * header fields, and an optional message-body. + * + *

+ * Returns a byte array with UTF-8 format representation of the encoded SipMessage. + * + * @return byte array with UTF-8 format representation of the encoded SipMessage. + */ + public @NonNull byte[] toEncodedMessage() { + byte[] header = new StringBuilder() + .append(mStartLine) + .append(mHeaderSection) + .append(CRLF) + .toString().getBytes(UTF_8); + byte[] sipMessage = new byte[header.length + mContent.length]; + System.arraycopy(header, 0, sipMessage, 0, header.length); + System.arraycopy(mContent, 0, sipMessage, header.length, mContent.length); + return sipMessage; + } }