Update PhoneStateListener#onOutgoingEmergencySms

Update the callback for emergency SMS to follow the same pattern as for
emergency calls for API consistency.

Fixes: 168269065
Test: atest CtsTelephonyTestCases:PhoneStateListenerTest
Change-Id: If27771aef1858ea92dd620b56368d1a6a4f61ab3
This commit is contained in:
Hall Liu
2020-09-11 13:32:16 -07:00
parent b5671dc8ba
commit 4c1e8a2a9e
6 changed files with 40 additions and 9 deletions

View File

@@ -10902,7 +10902,8 @@ package android.telephony {
method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes); method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int); method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber, int);
method public void onPhysicalChannelConfigurationChanged(@NonNull java.util.List<android.telephony.PhysicalChannelConfig>); method public void onPhysicalChannelConfigurationChanged(@NonNull java.util.List<android.telephony.PhysicalChannelConfig>);
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState); method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
method public void onRadioPowerStateChanged(int); method public void onRadioPowerStateChanged(int);

View File

@@ -4137,7 +4137,8 @@ package android.telephony {
public class PhoneStateListener { public class PhoneStateListener {
method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int); method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber, int);
field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000 field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000 field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
} }

View File

@@ -1001,15 +1001,42 @@ public class PhoneStateListener {
/** /**
* Callback invoked when an outgoing SMS is placed to an emergency number. * Callback invoked when an outgoing SMS is placed to an emergency number.
* *
* This method will be called when an emergency sms is sent on any subscription.
* @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to. * @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to.
*
* @deprecated Use {@link #onOutgoingEmergencySms(EmergencyNumber, int)}.
* @hide * @hide
*/ */
@SystemApi @SystemApi
@TestApi @TestApi
@Deprecated
public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) { public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
// default implementation empty // default implementation empty
} }
/**
* Smsback invoked when an outgoing sms is sent to an emergency number.
*
* This method will be called when an emergency sms is sent on any subscription,
* regardless of which subscription this listener was registered on.
*
* The default implementation of this method calls
* {@link #onOutgoingEmergencySms(EmergencyNumber)} for backwards compatibility purposes. Do
* not call {@code super(...)} from within your implementation unless you want
* {@link #onOutgoingEmergencySms(EmergencyNumber)} to be called as well.
*
* @param sentEmergencyNumber The {@link EmergencyNumber} the emergency sms was sent to.
* @param subscriptionId The subscription ID used to send the emergency sms.
* @hide
*/
@SystemApi
@TestApi
public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber,
int subscriptionId) {
// Default implementation for backwards compatibility
onOutgoingEmergencySms(sentEmergencyNumber);
}
/** /**
* Callback invoked when OEM hook raw event is received on the registered subscription. * Callback invoked when OEM hook raw event is received on the registered subscription.
* Note, the registration subId comes from {@link TelephonyManager} object which registers * Note, the registration subId comes from {@link TelephonyManager} object which registers
@@ -1399,13 +1426,14 @@ public class PhoneStateListener {
subscriptionId))); subscriptionId)));
} }
public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) { public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber,
int subscriptionId) {
PhoneStateListener psl = mPhoneStateListenerWeakRef.get(); PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
if (psl == null) return; if (psl == null) return;
Binder.withCleanCallingIdentity( Binder.withCleanCallingIdentity(
() -> mExecutor.execute( () -> mExecutor.execute(
() -> psl.onOutgoingEmergencySms(sentEmergencyNumber))); () -> psl.onOutgoingEmergencySms(sentEmergencyNumber, subscriptionId)));
} }
public void onPhoneCapabilityChanged(PhoneCapability capability) { public void onPhoneCapabilityChanged(PhoneCapability capability) {

View File

@@ -63,7 +63,7 @@ oneway interface IPhoneStateListener {
void onCallAttributesChanged(in CallAttributes callAttributes); void onCallAttributesChanged(in CallAttributes callAttributes);
void onEmergencyNumberListChanged(in Map emergencyNumberList); void onEmergencyNumberListChanged(in Map emergencyNumberList);
void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber, int subscriptionId); void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber, int subscriptionId);
void onOutgoingEmergencySms(in EmergencyNumber sentEmergencyNumber); void onOutgoingEmergencySms(in EmergencyNumber sentEmergencyNumber, int subscriptionId);
void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause); void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause);
void onImsCallDisconnectCauseChanged(in ImsReasonInfo imsReasonInfo); void onImsCallDisconnectCauseChanged(in ImsReasonInfo imsReasonInfo);
void onRegistrationFailed(in CellIdentity cellIdentity, void onRegistrationFailed(in CellIdentity cellIdentity,

View File

@@ -9766,7 +9766,8 @@ package android.telephony {
method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes); method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int); method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber); method @Deprecated public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber, int);
method public void onPhysicalChannelConfigurationChanged(@NonNull java.util.List<android.telephony.PhysicalChannelConfig>); method public void onPhysicalChannelConfigurationChanged(@NonNull java.util.List<android.telephony.PhysicalChannelConfig>);
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState); method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
method public void onRadioPowerStateChanged(int); method public void onRadioPowerStateChanged(int);

View File

@@ -2149,11 +2149,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) {
mOutgoingSmsEmergencyNumber[phoneId] = emergencyNumber; mOutgoingSmsEmergencyNumber[phoneId] = emergencyNumber;
for (Record r : mRecords) { for (Record r : mRecords) {
// Send to all listeners regardless of subscription
if (r.matchPhoneStateListenerEvent( if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_SMS) PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_SMS)) {
&& idMatch(r.subId, subId, phoneId)) {
try { try {
r.callback.onOutgoingEmergencySms(emergencyNumber); r.callback.onOutgoingEmergencySms(emergencyNumber, subId);
} catch (RemoteException ex) { } catch (RemoteException ex) {
mRemoveList.add(r.binder); mRemoveList.add(r.binder);
} }