Merge "Emergency API review"

This commit is contained in:
Brad Ebinger
2019-03-18 23:29:34 +00:00
committed by Gerrit Code Review
8 changed files with 84 additions and 72 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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(

View File

@@ -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

View File

@@ -10145,18 +10145,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;
}
/**
@@ -10195,31 +10198,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;
}
/**
@@ -10233,15 +10239,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;
}
@@ -10270,15 +10278,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;
}

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -1832,12 +1832,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.