Merge "Integrate the active emergency session listener in TelephonyRegistry"
This commit is contained in:
@@ -7752,6 +7752,8 @@ package android.telephony {
|
|||||||
method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
|
method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
|
||||||
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int);
|
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int);
|
||||||
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
|
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
|
||||||
|
method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
|
||||||
|
method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
|
||||||
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 @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
|
method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
|
||||||
method public void onRadioPowerStateChanged(int);
|
method public void onRadioPowerStateChanged(int);
|
||||||
|
|||||||
@@ -2852,6 +2852,11 @@ package android.telephony {
|
|||||||
method public static void setMinMatchForTest(int);
|
method public static void setMinMatchForTest(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class PhoneStateListener {
|
||||||
|
field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_CALL_EMERGENCY_NUMBER = 268435456; // 0x10000000
|
||||||
|
field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_SMS_EMERGENCY_NUMBER = 536870912; // 0x20000000
|
||||||
|
}
|
||||||
|
|
||||||
public class ServiceState implements android.os.Parcelable {
|
public class ServiceState implements android.os.Parcelable {
|
||||||
method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
|
method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
|
||||||
method public void setCdmaSystemAndNetworkId(int, int);
|
method public void setCdmaSystemAndNetworkId(int, int);
|
||||||
|
|||||||
@@ -65,6 +65,14 @@ public final class Telecom extends BaseCommand {
|
|||||||
private static final String COMMAND_UNREGISTER_PHONE_ACCOUNT = "unregister-phone-account";
|
private static final String COMMAND_UNREGISTER_PHONE_ACCOUNT = "unregister-phone-account";
|
||||||
private static final String COMMAND_SET_DEFAULT_DIALER = "set-default-dialer";
|
private static final String COMMAND_SET_DEFAULT_DIALER = "set-default-dialer";
|
||||||
private static final String COMMAND_GET_DEFAULT_DIALER = "get-default-dialer";
|
private static final String COMMAND_GET_DEFAULT_DIALER = "get-default-dialer";
|
||||||
|
/**
|
||||||
|
* Change the system dialer package name if a package name was specified,
|
||||||
|
* Example: adb shell telecom set-system-dialer <PACKAGE>
|
||||||
|
*
|
||||||
|
* Restore it to the default if if argument is "default" or no argument is passed.
|
||||||
|
* Example: adb shell telecom set-system-dialer default
|
||||||
|
*/
|
||||||
|
private static final String COMMAND_SET_SYSTEM_DIALER = "set-system-dialer";
|
||||||
private static final String COMMAND_GET_SYSTEM_DIALER = "get-system-dialer";
|
private static final String COMMAND_GET_SYSTEM_DIALER = "get-system-dialer";
|
||||||
private static final String COMMAND_WAIT_ON_HANDLERS = "wait-on-handlers";
|
private static final String COMMAND_WAIT_ON_HANDLERS = "wait-on-handlers";
|
||||||
private static final String COMMAND_SET_SIM_COUNT = "set-sim-count";
|
private static final String COMMAND_SET_SIM_COUNT = "set-sim-count";
|
||||||
@@ -193,6 +201,9 @@ public final class Telecom extends BaseCommand {
|
|||||||
case COMMAND_GET_DEFAULT_DIALER:
|
case COMMAND_GET_DEFAULT_DIALER:
|
||||||
runGetDefaultDialer();
|
runGetDefaultDialer();
|
||||||
break;
|
break;
|
||||||
|
case COMMAND_SET_SYSTEM_DIALER:
|
||||||
|
runSetSystemDialer();
|
||||||
|
break;
|
||||||
case COMMAND_GET_SYSTEM_DIALER:
|
case COMMAND_GET_SYSTEM_DIALER:
|
||||||
runGetSystemDialer();
|
runGetSystemDialer();
|
||||||
break;
|
break;
|
||||||
@@ -297,6 +308,12 @@ public final class Telecom extends BaseCommand {
|
|||||||
System.out.println("Success - " + packageName + " set as override default dialer.");
|
System.out.println("Success - " + packageName + " set as override default dialer.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void runSetSystemDialer() throws RemoteException {
|
||||||
|
final String packageName = nextArg();
|
||||||
|
mTelecomService.setSystemDialerPackage(packageName.equals("default") ? null : packageName);
|
||||||
|
System.out.println("Success - " + packageName + " set as override system dialer.");
|
||||||
|
}
|
||||||
|
|
||||||
private void runGetDefaultDialer() throws RemoteException {
|
private void runGetDefaultDialer() throws RemoteException {
|
||||||
System.out.println(mTelecomService.getDefaultDialerPackage());
|
System.out.println(mTelecomService.getDefaultDialerPackage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.READ_ACTIVE_EMERGENCY_SESSION" />
|
||||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||||
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
||||||
|
|||||||
@@ -209,6 +209,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
|
|
||||||
private Map<Integer, List<EmergencyNumber>> mEmergencyNumberList;
|
private Map<Integer, List<EmergencyNumber>> mEmergencyNumberList;
|
||||||
|
|
||||||
|
private EmergencyNumber[] mOutgoingSmsEmergencyNumber;
|
||||||
|
|
||||||
|
private EmergencyNumber[] mOutgoingCallEmergencyNumber;
|
||||||
|
|
||||||
private CallQuality[] mCallQuality;
|
private CallQuality[] mCallQuality;
|
||||||
|
|
||||||
private CallAttributes[] mCallAttributes;
|
private CallAttributes[] mCallAttributes;
|
||||||
@@ -267,6 +271,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
PhoneStateListener.LISTEN_PRECISE_CALL_STATE |
|
PhoneStateListener.LISTEN_PRECISE_CALL_STATE |
|
||||||
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE;
|
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE;
|
||||||
|
|
||||||
|
static final int READ_ACTIVE_EMERGENCY_SESSION_PERMISSION_MASK =
|
||||||
|
PhoneStateListener.LISTEN_OUTGOING_CALL_EMERGENCY_NUMBER
|
||||||
|
| PhoneStateListener.LISTEN_OUTGOING_SMS_EMERGENCY_NUMBER;
|
||||||
|
|
||||||
private static final int MSG_USER_SWITCHED = 1;
|
private static final int MSG_USER_SWITCHED = 1;
|
||||||
private static final int MSG_UPDATE_DEFAULT_SUB = 2;
|
private static final int MSG_UPDATE_DEFAULT_SUB = 2;
|
||||||
|
|
||||||
@@ -407,6 +415,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
mImsReasonInfo = new ArrayList<>();
|
mImsReasonInfo = new ArrayList<>();
|
||||||
mPhysicalChannelConfigs = new ArrayList<>();
|
mPhysicalChannelConfigs = new ArrayList<>();
|
||||||
mEmergencyNumberList = new HashMap<>();
|
mEmergencyNumberList = new HashMap<>();
|
||||||
|
mOutgoingCallEmergencyNumber = new EmergencyNumber[numPhones];
|
||||||
|
mOutgoingSmsEmergencyNumber = new EmergencyNumber[numPhones];
|
||||||
for (int i = 0; i < numPhones; i++) {
|
for (int i = 0; i < numPhones; i++) {
|
||||||
mCallState[i] = TelephonyManager.CALL_STATE_IDLE;
|
mCallState[i] = TelephonyManager.CALL_STATE_IDLE;
|
||||||
mDataActivity[i] = TelephonyManager.DATA_ACTIVITY_NONE;
|
mDataActivity[i] = TelephonyManager.DATA_ACTIVITY_NONE;
|
||||||
@@ -1927,6 +1937,56 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyOutgoingEmergencyCall(int phoneId, int subId,
|
||||||
|
EmergencyNumber emergencyNumber) {
|
||||||
|
if (!checkNotifyPermission("notifyOutgoingEmergencyCall()")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
synchronized (mRecords) {
|
||||||
|
if (validatePhoneId(phoneId)) {
|
||||||
|
mOutgoingCallEmergencyNumber[phoneId] = emergencyNumber;
|
||||||
|
for (Record r : mRecords) {
|
||||||
|
if (r.matchPhoneStateListenerEvent(
|
||||||
|
PhoneStateListener.LISTEN_OUTGOING_CALL_EMERGENCY_NUMBER)
|
||||||
|
&& idMatch(r.subId, subId, phoneId)) {
|
||||||
|
try {
|
||||||
|
r.callback.onOutgoingEmergencyCall(emergencyNumber);
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
mRemoveList.add(r.binder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleRemoveListLocked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyOutgoingEmergencySms(int phoneId, int subId,
|
||||||
|
EmergencyNumber emergencyNumber) {
|
||||||
|
if (!checkNotifyPermission("notifyOutgoingEmergencySms()")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
synchronized (mRecords) {
|
||||||
|
if (validatePhoneId(phoneId)) {
|
||||||
|
mOutgoingSmsEmergencyNumber[phoneId] = emergencyNumber;
|
||||||
|
for (Record r : mRecords) {
|
||||||
|
if (r.matchPhoneStateListenerEvent(
|
||||||
|
PhoneStateListener.LISTEN_OUTGOING_SMS_EMERGENCY_NUMBER)
|
||||||
|
&& idMatch(r.subId, subId, phoneId)) {
|
||||||
|
try {
|
||||||
|
r.callback.onOutgoingEmergencySms(emergencyNumber);
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
mRemoveList.add(r.binder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleRemoveListLocked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyCallQualityChanged(CallQuality callQuality, int phoneId, int subId,
|
public void notifyCallQualityChanged(CallQuality callQuality, int phoneId, int subId,
|
||||||
int callNetworkType) {
|
int callNetworkType) {
|
||||||
@@ -1999,6 +2059,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
pw.println("mCallAttributes=" + mCallAttributes[i]);
|
pw.println("mCallAttributes=" + mCallAttributes[i]);
|
||||||
pw.println("mCallNetworkType=" + mCallNetworkType[i]);
|
pw.println("mCallNetworkType=" + mCallNetworkType[i]);
|
||||||
pw.println("mPreciseDataConnectionState=" + mPreciseDataConnectionState[i]);
|
pw.println("mPreciseDataConnectionState=" + mPreciseDataConnectionState[i]);
|
||||||
|
pw.println("mOutgoingCallEmergencyNumber=" + mOutgoingCallEmergencyNumber[i]);
|
||||||
|
pw.println("mOutgoingSmsEmergencyNumber=" + mOutgoingSmsEmergencyNumber[i]);
|
||||||
pw.decreaseIndent();
|
pw.decreaseIndent();
|
||||||
}
|
}
|
||||||
pw.println("mCarrierNetworkChangeState=" + mCarrierNetworkChangeState);
|
pw.println("mCarrierNetworkChangeState=" + mCarrierNetworkChangeState);
|
||||||
@@ -2268,6 +2330,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
android.Manifest.permission.READ_PRECISE_PHONE_STATE, null);
|
android.Manifest.permission.READ_PRECISE_PHONE_STATE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((events & READ_ACTIVE_EMERGENCY_SESSION_PERMISSION_MASK) != 0) {
|
||||||
|
mContext.enforceCallingOrSelfPermission(
|
||||||
|
android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION, null);
|
||||||
|
}
|
||||||
|
|
||||||
if ((events & PhoneStateListener.LISTEN_OEM_HOOK_RAW_EVENT) != 0) {
|
if ((events & PhoneStateListener.LISTEN_OEM_HOOK_RAW_EVENT) != 0) {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
|
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
|
||||||
|
|||||||
@@ -301,6 +301,11 @@ interface ITelecomService {
|
|||||||
|
|
||||||
void setTestAutoModeApp(String packageName);
|
void setTestAutoModeApp(String packageName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see TelecomServiceImpl#setSystemDialerPackage
|
||||||
|
*/
|
||||||
|
void setSystemDialerPackage(in String packageName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see TelecomServiceImpl#setTestDefaultDialer
|
* @see TelecomServiceImpl#setTestDefaultDialer
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import android.Manifest;
|
|||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.RequiresPermission;
|
import android.annotation.RequiresPermission;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
|
import android.annotation.TestApi;
|
||||||
import android.annotation.UnsupportedAppUsage;
|
import android.annotation.UnsupportedAppUsage;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -371,6 +372,7 @@ public class PhoneStateListener {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
|
@TestApi
|
||||||
@RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
|
@RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
|
||||||
public static final int LISTEN_OUTGOING_CALL_EMERGENCY_NUMBER = 0x10000000;
|
public static final int LISTEN_OUTGOING_CALL_EMERGENCY_NUMBER = 0x10000000;
|
||||||
|
|
||||||
@@ -383,6 +385,7 @@ public class PhoneStateListener {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
|
@TestApi
|
||||||
@RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
|
@RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
|
||||||
public static final int LISTEN_OUTGOING_SMS_EMERGENCY_NUMBER = 0x20000000;
|
public static final int LISTEN_OUTGOING_SMS_EMERGENCY_NUMBER = 0x20000000;
|
||||||
|
|
||||||
@@ -874,6 +877,7 @@ public class PhoneStateListener {
|
|||||||
* to.
|
* to.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
|
@SystemApi
|
||||||
public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
|
public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
|
||||||
// default implementation empty
|
// default implementation empty
|
||||||
}
|
}
|
||||||
@@ -884,6 +888,7 @@ public class PhoneStateListener {
|
|||||||
* @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to.
|
* @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
|
@SystemApi
|
||||||
public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
|
public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
|
||||||
// default implementation empty
|
// default implementation empty
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,10 @@ interface ITelephonyRegistry {
|
|||||||
void notifyActiveDataSubIdChanged(int activeDataSubId);
|
void notifyActiveDataSubIdChanged(int activeDataSubId);
|
||||||
void notifyRadioPowerStateChanged(in int phoneId, in int subId, in int state);
|
void notifyRadioPowerStateChanged(in int phoneId, in int subId, in int state);
|
||||||
void notifyEmergencyNumberList(in int phoneId, in int subId);
|
void notifyEmergencyNumberList(in int phoneId, in int subId);
|
||||||
|
void notifyOutgoingEmergencyCall(in int phoneId, in int subId,
|
||||||
|
in EmergencyNumber emergencyNumber);
|
||||||
|
void notifyOutgoingEmergencySms(in int phoneId, in int subId,
|
||||||
|
in EmergencyNumber emergencyNumber);
|
||||||
void notifyCallQualityChanged(in CallQuality callQuality, int phoneId, int subId,
|
void notifyCallQualityChanged(in CallQuality callQuality, int phoneId, int subId,
|
||||||
int callNetworkType);
|
int callNetworkType);
|
||||||
void notifyImsDisconnectCause(int subId, in ImsReasonInfo imsReasonInfo);
|
void notifyImsDisconnectCause(int subId, in ImsReasonInfo imsReasonInfo);
|
||||||
|
|||||||
Reference in New Issue
Block a user