diff options
| -rwxr-xr-x | api/current.txt | 18 | ||||
| -rw-r--r-- | api/system-current.txt | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/TelephonyRegistry.java | 2 | ||||
| -rw-r--r-- | telephony/java/android/telephony/PhoneNumberUtils.java | 29 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 76 | ||||
| -rw-r--r-- | telephony/java/android/telephony/emergency/EmergencyNumber.java | 16 | ||||
| -rw-r--r-- | telephony/java/android/telephony/ims/ImsCallProfile.java | 5 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/ITelephony.aidl | 4 |
8 files changed, 84 insertions, 72 deletions
diff --git a/api/current.txt b/api/current.txt index c09f0d44ca88..02fb50cf346e 100755 --- a/api/current.txt +++ b/api/current.txt @@ -43034,14 +43034,14 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @WorkerThread public android.os.PersistableBundle getCarrierConfig(); method public int getCarrierIdFromSimMccMnc(); method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.telephony.CellLocation getCellLocation(); - method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @Nullable public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList(); - method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @Nullable public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getCurrentEmergencyNumberList(int); method public int getDataActivity(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType(); method public int getDataState(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceId(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceId(int); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion(); + method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @NonNull public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(); + method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @NonNull public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(int); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String[] getForbiddenPlmns(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getGroupIdLevel1(); method public String getIccAuthentication(int, int, String); @@ -43093,9 +43093,9 @@ package android.telephony { method public String iccTransmitApduBasicChannel(int, int, int, int, int, String); method public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String); method public boolean isConcurrentVoiceAndDataSupported(); - method public boolean isCurrentEmergencyNumber(@NonNull String); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled(); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled(); + method public boolean isEmergencyNumber(@NonNull String); method public boolean isHearingAidCompatibilitySupported(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isMultisimSupported(); method public boolean isNetworkRoaming(); @@ -43414,15 +43414,13 @@ package android.telephony.emergency { public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable { method public int compareTo(@NonNull android.telephony.emergency.EmergencyNumber); method public int describeContents(); - method public String getCountryIso(); + method @NonNull public String getCountryIso(); method public int getEmergencyCallRouting(); - method public int getEmergencyNumberSourceBitmask(); - method public java.util.List<java.lang.Integer> getEmergencyNumberSources(); - method public java.util.List<java.lang.Integer> getEmergencyServiceCategories(); - method public int getEmergencyServiceCategoryBitmask(); + method @NonNull public java.util.List<java.lang.Integer> getEmergencyNumberSources(); + method @NonNull public java.util.List<java.lang.Integer> getEmergencyServiceCategories(); method @NonNull public java.util.List<java.lang.String> getEmergencyUrns(); - method public String getMnc(); - method public String getNumber(); + method @NonNull public String getMnc(); + method @NonNull public String getNumber(); method public boolean isFromSources(int); method public boolean isInEmergencyServiceCategories(int); method public void writeToParcel(android.os.Parcel, int); diff --git a/api/system-current.txt b/api/system-current.txt index e6f5252e2a06..859e97521931 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6401,10 +6401,10 @@ package android.telephony { method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String); method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String); - method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCurrentPotentialEmergencyNumber(@NonNull String); method public boolean isDataConnectivityPossible(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook(); + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isRebootRequiredForModemConfigChange(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging(); @@ -6788,7 +6788,7 @@ package android.telephony.ims { method public static int getCallTypeFromVideoState(int); method public int getEmergencyCallRouting(); method public int getEmergencyServiceCategories(); - method public java.util.List<java.lang.String> getEmergencyUrns(); + method @NonNull public java.util.List<java.lang.String> getEmergencyUrns(); method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile(); method public int getRestrictCause(); method public int getServiceType(); @@ -6806,7 +6806,7 @@ package android.telephony.ims { method public void setEmergencyCallRouting(int); method public void setEmergencyCallTesting(boolean); method public void setEmergencyServiceCategories(int); - method public void setEmergencyUrns(java.util.List<java.lang.String>); + method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>); method public void setHasKnownUserIntentEmergency(boolean); method public void updateCallExtras(android.telephony.ims.ImsCallProfile); method public void updateCallType(android.telephony.ims.ImsCallProfile); diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index e78ae5547b5a..d2a0d7bc23fa 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -1806,7 +1806,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { TelephonyManager tm = (TelephonyManager) mContext.getSystemService( Context.TELEPHONY_SERVICE); - mEmergencyNumberList = tm.getCurrentEmergencyNumberList(); + mEmergencyNumberList = tm.getEmergencyNumberList(); for (Record r : mRecords) { if (r.matchPhoneStateListenerEvent( diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index 4dcb410e277a..549c04420ce0 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -25,12 +25,11 @@ import android.annotation.IntDef; import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.database.Cursor; import android.location.CountryDetector; import android.net.Uri; -import android.os.SystemProperties; import android.os.PersistableBundle; +import android.os.SystemProperties; import android.provider.Contacts; import android.provider.ContactsContract; import android.telecom.PhoneAccount; @@ -1738,7 +1737,7 @@ public class PhoneNumberUtils { * @return true if the number is in the list of emergency numbers * listed in the RIL / SIM, otherwise return false. * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} instead. + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} instead. */ @Deprecated public static boolean isEmergencyNumber(String number) { @@ -1754,7 +1753,7 @@ public class PhoneNumberUtils { * @return true if the number is in the list of emergency numbers * listed in the RIL / SIM, otherwise return false. * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} * instead. * * @hide @@ -1785,7 +1784,7 @@ public class PhoneNumberUtils { * listed in the RIL / SIM, *or* if the number starts with the * same digits as any of those emergency numbers. * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide @@ -1814,7 +1813,7 @@ public class PhoneNumberUtils { * listed in the RIL / SIM, *or* if the number starts with the * same digits as any of those emergency numbers. * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide @@ -1883,7 +1882,7 @@ public class PhoneNumberUtils { * @return if the number is an emergency number for the specific country, then return true, * otherwise false * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} * instead. * * @hide @@ -1903,7 +1902,7 @@ public class PhoneNumberUtils { * @return if the number is an emergency number for the specific country, then return true, * otherwise false * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} * instead. * * @hide @@ -1934,7 +1933,7 @@ public class PhoneNumberUtils { * country, *or* if the number starts with the same digits as * any of those emergency numbers. * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide @@ -1964,7 +1963,7 @@ public class PhoneNumberUtils { * country, *or* if the number starts with the same digits as * any of those emergency numbers. * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide @@ -2017,7 +2016,7 @@ public class PhoneNumberUtils { private static boolean isEmergencyNumberInternal(int subId, String number, String defaultCountryIso, boolean useExactMatch) { - return TelephonyManager.getDefault().isCurrentEmergencyNumber(number); + return TelephonyManager.getDefault().isEmergencyNumber(number); } /** @@ -2028,7 +2027,7 @@ public class PhoneNumberUtils { * @return true if the specified number is an emergency number for the country the user * is currently in. * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} * instead. */ @Deprecated @@ -2045,7 +2044,7 @@ public class PhoneNumberUtils { * @return true if the specified number is an emergency number for the country the user * is currently in. * - * @deprecated Please use {@link TelephonyManager#isCurrentEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isEmergencyNumber(String)} * instead. * * @hide @@ -2079,7 +2078,7 @@ public class PhoneNumberUtils { * * @see android.location.CountryDetector * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide @@ -2110,7 +2109,7 @@ public class PhoneNumberUtils { * @return true if the specified number is an emergency number for a local country, based on the * CountryDetector. * - * @deprecated Please use {@link TelephonyManager#isCurrentPotentialEmergencyNumber(String)} + * @deprecated Please use {@link TelephonyManager#isPotentialEmergencyNumber(String)} * instead. * * @hide diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 1e24db5caf91..cbe9bf2dc654 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10162,18 +10162,21 @@ public class TelephonyManager { * a SecurityException if the caller does not have the permission. */ @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) - @Nullable - public Map<Integer, List<EmergencyNumber>> getCurrentEmergencyNumberList() { + @NonNull + public Map<Integer, List<EmergencyNumber>> getEmergencyNumberList() { + Map<Integer, List<EmergencyNumber>> emergencyNumberList = new HashMap<>(); try { ITelephony telephony = getITelephony(); - if (telephony == null) { - return null; + if (telephony != null) { + return telephony.getEmergencyNumberList(mContext.getOpPackageName()); + } else { + throw new IllegalStateException("telephony service is null."); } - return telephony.getCurrentEmergencyNumberList(mContext.getOpPackageName()); } catch (RemoteException ex) { - Log.e(TAG, "getCurrentEmergencyNumberList RemoteException", ex); + Log.e(TAG, "getEmergencyNumberList RemoteException", ex); + ex.rethrowAsRuntimeException(); } - return null; + return emergencyNumberList; } /** @@ -10212,31 +10215,34 @@ public class TelephonyManager { * a SecurityException if the caller does not have the permission. */ @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) - @Nullable - public Map<Integer, List<EmergencyNumber>> getCurrentEmergencyNumberList( + @NonNull + public Map<Integer, List<EmergencyNumber>> getEmergencyNumberList( @EmergencyServiceCategories int categories) { + Map<Integer, List<EmergencyNumber>> emergencyNumberList = new HashMap<>(); try { ITelephony telephony = getITelephony(); - if (telephony == null) { - return null; - } - Map<Integer, List<EmergencyNumber>> numberMap = telephony - .getCurrentEmergencyNumberList(mContext.getOpPackageName()); - if (numberMap != null) { - for (Integer subscriptionId : numberMap.keySet()) { - List<EmergencyNumber> numberList = numberMap.get(subscriptionId); - for (EmergencyNumber number : numberList) { - if (!number.isInEmergencyServiceCategories(categories)) { - numberList.remove(number); + if (telephony != null) { + emergencyNumberList = telephony.getEmergencyNumberList( + mContext.getOpPackageName()); + if (emergencyNumberList != null) { + for (Integer subscriptionId : emergencyNumberList.keySet()) { + List<EmergencyNumber> numberList = emergencyNumberList.get(subscriptionId); + for (EmergencyNumber number : numberList) { + if (!number.isInEmergencyServiceCategories(categories)) { + numberList.remove(number); + } } } } + return emergencyNumberList; + } else { + throw new IllegalStateException("telephony service is null."); } - return numberMap; } catch (RemoteException ex) { - Log.e(TAG, "getCurrentEmergencyNumberList with Categories RemoteException", ex); + Log.e(TAG, "getEmergencyNumberList with Categories RemoteException", ex); + ex.rethrowAsRuntimeException(); } - return null; + return emergencyNumberList; } /** @@ -10250,15 +10256,17 @@ public class TelephonyManager { * @return {@code true} if the given number is an emergency number based on current locale, * sim, modem and network; {@code false} otherwise. */ - public boolean isCurrentEmergencyNumber(@NonNull String number) { + public boolean isEmergencyNumber(@NonNull String number) { try { ITelephony telephony = getITelephony(); - if (telephony == null) { - return false; + if (telephony != null) { + return telephony.isEmergencyNumber(number, true); + } else { + throw new IllegalStateException("telephony service is null."); } - return telephony.isCurrentEmergencyNumber(number, true); } catch (RemoteException ex) { - Log.e(TAG, "isCurrentEmergencyNumber RemoteException", ex); + Log.e(TAG, "isEmergencyNumber RemoteException", ex); + ex.rethrowAsRuntimeException(); } return false; } @@ -10287,15 +10295,17 @@ public class TelephonyManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) - public boolean isCurrentPotentialEmergencyNumber(@NonNull String number) { + public boolean isPotentialEmergencyNumber(@NonNull String number) { try { ITelephony telephony = getITelephony(); - if (telephony == null) { - return false; + if (telephony != null) { + return telephony.isEmergencyNumber(number, false); + } else { + throw new IllegalStateException("telephony service is null."); } - return telephony.isCurrentEmergencyNumber(number, false); } catch (RemoteException ex) { - Log.e(TAG, "isCurrentEmergencyNumber RemoteException", ex); + Log.e(TAG, "isEmergencyNumber RemoteException", ex); + ex.rethrowAsRuntimeException(); } return false; } diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java index e68256d086bc..397975fe58cf 100644 --- a/telephony/java/android/telephony/emergency/EmergencyNumber.java +++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java @@ -302,7 +302,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * * @return the dialing number. */ - public String getNumber() { + public @NonNull String getNumber() { return mNumber; } @@ -311,7 +311,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * * @return the country code string (lowercase character) in ISO 3166 format. */ - public String getCountryIso() { + public @NonNull String getCountryIso() { return mCountryIso; } @@ -320,7 +320,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * * @return the Mobile Network Code of the emergency number. */ - public String getMnc() { + public @NonNull String getMnc() { return mMnc; } @@ -328,6 +328,8 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * Returns the bitmask of emergency service categories of the emergency number. * * @return bitmask of the emergency service categories + * + * @hide */ public @EmergencyServiceCategories int getEmergencyServiceCategoryBitmask() { return mEmergencyServiceCategoryBitmask; @@ -357,7 +359,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * * @return a list of the emergency service categories */ - public List<Integer> getEmergencyServiceCategories() { + public @NonNull List<Integer> getEmergencyServiceCategories() { List<Integer> categories = new ArrayList<>(); if (serviceUnspecified()) { categories.add(EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED); @@ -384,7 +386,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * number does not have a specified emergency Uniform Resource Name. */ public @NonNull List<String> getEmergencyUrns() { - return mEmergencyUrns; + return Collections.unmodifiableList(mEmergencyUrns); } /** @@ -421,6 +423,8 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * Returns the bitmask of the sources of the emergency number. * * @return bitmask of the emergency number sources + * + * @hide */ public @EmergencyNumberSources int getEmergencyNumberSourceBitmask() { return mEmergencyNumberSourceBitmask; @@ -431,7 +435,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu * * @return a list of emergency number sources */ - public List<Integer> getEmergencyNumberSources() { + public @NonNull List<Integer> getEmergencyNumberSources() { List<Integer> sources = new ArrayList<>(); for (Integer source : EMERGENCY_NUMBER_SOURCE_SET) { if ((mEmergencyNumberSourceBitmask & source) == source) { diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java index 907dbbd20403..568c11be9077 100644 --- a/telephony/java/android/telephony/ims/ImsCallProfile.java +++ b/telephony/java/android/telephony/ims/ImsCallProfile.java @@ -17,6 +17,7 @@ package android.telephony.ims; import android.annotation.IntDef; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; import android.os.Bundle; @@ -837,7 +838,7 @@ public final class ImsCallProfile implements Parcelable { * 3gpp 22.101, Section 10 - Emergency Calls. */ @VisibleForTesting - public void setEmergencyUrns(List<String> emergencyUrns) { + public void setEmergencyUrns(@NonNull List<String> emergencyUrns) { mEmergencyUrns = emergencyUrns; } @@ -911,7 +912,7 @@ public final class ImsCallProfile implements Parcelable { * Reference: 3gpp 24.503, Section 5.1.6.8.1 - General; * 3gpp 22.101, Section 10 - Emergency Calls. */ - public List<String> getEmergencyUrns() { + public @NonNull List<String> getEmergencyUrns() { return mEmergencyUrns; } diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 672ea0b21340..e7a31a99c13a 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1840,12 +1840,12 @@ interface ITelephony { /** * Return the emergency number list from all the active subscriptions. */ - Map getCurrentEmergencyNumberList(String callingPackage); + Map getEmergencyNumberList(String callingPackage); /** * Identify if the number is emergency number, based on all the active subscriptions. */ - boolean isCurrentEmergencyNumber(String number, boolean exactMatch); + boolean isEmergencyNumber(String number, boolean exactMatch); /** * Return a list of certs in hex string from loaded carrier privileges access rules. |