diff --git a/api/current.txt b/api/current.txt index bc770193cc829..6fae882267fd0 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40765,6 +40765,7 @@ package android.telephony.mbms { public class ServiceInfo { method public java.util.List getLocales(); method public java.lang.CharSequence getNameForLocale(java.util.Locale); + method public java.util.Set getNamedContentLocales(); method public java.lang.String getServiceClassName(); method public java.lang.String getServiceId(); method public java.util.Date getSessionEndTime(); diff --git a/api/system-current.txt b/api/system-current.txt index 0e082b11685b2..8c1169a39b687 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -44371,6 +44371,7 @@ package android.telephony.mbms { public class ServiceInfo { method public java.util.List getLocales(); method public java.lang.CharSequence getNameForLocale(java.util.Locale); + method public java.util.Set getNamedContentLocales(); method public java.lang.String getServiceClassName(); method public java.lang.String getServiceId(); method public java.util.Date getSessionEndTime(); diff --git a/api/test-current.txt b/api/test-current.txt index 6192e4beb8aef..65918c5bb8c80 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -41115,6 +41115,7 @@ package android.telephony.mbms { public class ServiceInfo { method public java.util.List getLocales(); method public java.lang.CharSequence getNameForLocale(java.util.Locale); + method public java.util.Set getNamedContentLocales(); method public java.lang.String getServiceClassName(); method public java.lang.String getServiceId(); method public java.util.Date getSessionEndTime(); diff --git a/telephony/java/android/telephony/mbms/ServiceInfo.java b/telephony/java/android/telephony/mbms/ServiceInfo.java index 9a01ed00e0cd1..8529f525e06f6 100644 --- a/telephony/java/android/telephony/mbms/ServiceInfo.java +++ b/telephony/java/android/telephony/mbms/ServiceInfo.java @@ -23,6 +23,7 @@ import android.os.Parcelable; import android.text.TextUtils; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -62,12 +63,6 @@ public class ServiceInfo { throw new RuntimeException("bad locales length " + newLocales.size()); } - for (Locale l : newLocales) { - if (!newNames.containsKey(l)) { - throw new IllegalArgumentException("A name must be provided for each locale"); - } - } - names = new HashMap(newNames.size()); names.putAll(newNames); className = newClassName; @@ -127,7 +122,7 @@ public class ServiceInfo { * Get the user-displayable name for this cell-broadcast service corresponding to the * provided {@link Locale}. * @param locale The {@link Locale} in which you want the name of the service. This must be a - * value from the list returned by {@link #getLocales()} -- an + * value from the set returned by {@link #getNamedContentLocales()} -- an * {@link java.util.NoSuchElementException} may be thrown otherwise. * @return The {@link CharSequence} providing the name of the service in the given * {@link Locale} @@ -139,6 +134,17 @@ public class ServiceInfo { return names.get(locale); } + /** + * Return an unmodifiable set of the current {@link Locale}s that have a user-displayable name + * associated with them. The user-displayable name associated with any {@link Locale} in this + * set can be retrieved with {@link #getNameForLocale(Locale)}. + * @return An unmodifiable set of {@link Locale} objects corresponding to a user-displayable + * content name in that locale. + */ + public @NonNull Set getNamedContentLocales() { + return Collections.unmodifiableSet(names.keySet()); + } + /** * The class name for this service - used to categorize and filter */