Add PhoneCapabilityChanged in phone state listener
Add a new hidden event PhoneCapabilityChanged that can be
listned to know phone capability has changed.
Bug: 92796390
Test: build
Change-Id: I12ccde1a1c4257ac50c2cfa73d2d5b58dd7e1518
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index ad9fa40..566ce4f 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -36,6 +36,7 @@
import android.telephony.CellLocation;
import android.telephony.DisconnectCause;
import android.telephony.LocationAccessPolicy;
+import android.telephony.PhoneCapability;
import android.telephony.PhoneStateListener;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState;
@@ -47,7 +48,6 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.VoLteServiceState;
-import android.text.TextUtils;
import android.util.LocalLog;
import com.android.internal.app.IBatteryStats;
@@ -200,6 +200,8 @@
private boolean mCarrierNetworkChangeState = false;
+ private PhoneCapability mPhoneCapability = null;
+
private final LocalLog mLocalLog = new LocalLog(100);
private PreciseDataConnectionState mPreciseDataConnectionState =
@@ -658,6 +660,13 @@
remove(r.binder);
}
}
+ if ((events & PhoneStateListener.LISTEN_PHONE_CAPABILITY_CHANGE) != 0) {
+ try {
+ r.callback.onPhoneCapabilityChanged(mPhoneCapability);
+ } catch (RemoteException ex) {
+ remove(r.binder);
+ }
+ }
}
}
} else {
@@ -1453,6 +1462,33 @@
}
}
+ public void notifyPhoneCapabilityChanged(PhoneCapability capability) {
+ if (!checkNotifyPermission("notifyPhoneCapabilityChanged()")) {
+ return;
+ }
+
+ if (VDBG) {
+ log("notifyPhoneCapabilityChanged: capability=" + capability);
+ }
+
+ synchronized (mRecords) {
+ mPhoneCapability = capability;
+
+ for (Record r : mRecords) {
+ if (r.matchPhoneStateListenerEvent(
+ PhoneStateListener.LISTEN_PHONE_CAPABILITY_CHANGE)) {
+ try {
+ r.callback.onPhoneCapabilityChanged(capability);
+ } catch (RemoteException ex) {
+ mRemoveList.add(r.binder);
+ }
+ }
+ }
+ handleRemoveListLocked();
+ }
+ }
+
+
@Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
@@ -1488,6 +1524,7 @@
pw.println("mForegroundCallState=" + mForegroundCallState);
pw.println("mBackgroundCallState=" + mBackgroundCallState);
pw.println("mVoLteServiceState=" + mVoLteServiceState);
+ pw.println("mPhoneCapability=" + mPhoneCapability);
pw.decreaseIndent();