diff options
7 files changed, 15 insertions, 98 deletions
diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java index d39b56ddabed..5b9d69c2f9ff 100644 --- a/core/java/android/telephony/PhoneStateListener.java +++ b/core/java/android/telephony/PhoneStateListener.java @@ -191,20 +191,6 @@ public class PhoneStateListener { public static final int LISTEN_SIGNAL_STRENGTHS = 0x00000100; /** - * Listen for changes of the network signal strengths (cellular) always reported from modem, - * even in some situations such as the screen of the device is off. - * - * @see #onSignalStrengthsChanged - * - * @hide - * @deprecated Use TelephonyManager#setSignalStrengthUpdateRequest - * instead. - */ - @Deprecated - @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) - public static final int LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH = 0x00000200; - - /** * Listen for changes to observed cell info. * * Listening to this event requires the {@link Manifest.permission#READ_PHONE_STATE} and diff --git a/core/java/android/telephony/TelephonyRegistryManager.java b/core/java/android/telephony/TelephonyRegistryManager.java index bedad7344e9d..cb1cff9cda22 100644 --- a/core/java/android/telephony/TelephonyRegistryManager.java +++ b/core/java/android/telephony/TelephonyRegistryManager.java @@ -1041,10 +1041,6 @@ public class TelephonyRegistryManager { eventList.add(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED); } - if ((eventMask & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) != 0) { - eventList.add(TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED); - } - if ((eventMask & PhoneStateListener.LISTEN_CELL_INFO) != 0) { eventList.add(TelephonyCallback.EVENT_CELL_INFO_CHANGED); } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 1418dbe0f849..d2f42924e9e7 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2394,7 +2394,7 @@ <permission android:name="android.permission.READ_ACTIVE_EMERGENCY_SESSION" android:protectionLevel="signature" /> - <!-- Allows listen permission to always reported signal strength. + <!-- Allows listen permission to always reported system signal strength. @hide Used internally. --> <permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH" android:protectionLevel="signature" /> diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 43bd9e773070..c74270882260 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -1164,17 +1164,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { remove(r.binder); } } - if (events.contains( - TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) { - updateReportSignalStrengthDecision(r.subId); - try { - if (mSignalStrength[r.phoneId] != null) { - r.callback.onSignalStrengthsChanged(mSignalStrength[r.phoneId]); - } - } catch (RemoteException ex) { - remove(r.binder); - } - } if (validateEventAndUserLocked( r, TelephonyCallback.EVENT_CELL_INFO_CHANGED)) { try { @@ -1353,27 +1342,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } } - private void updateReportSignalStrengthDecision(int subscriptionId) { - synchronized (mRecords) { - TelephonyManager telephonyManager = (TelephonyManager) mContext - .getSystemService(Context.TELEPHONY_SERVICE); - for (Record r : mRecords) { - // If any of the system clients wants to always listen to signal strength, - // we need to set it on. - if (r.matchTelephonyCallbackEvent( - TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) { - telephonyManager.createForSubscriptionId(subscriptionId) - .setAlwaysReportSignalStrength(true); - return; - } - } - // If none of the system clients wants to always listen to signal strength, - // we need to set it off. - telephonyManager.createForSubscriptionId(subscriptionId) - .setAlwaysReportSignalStrength(false); - } - } - private String getCallIncomingNumber(Record record, int phoneId) { // Only reveal the incoming number if the record has read call log permission. return record.canReadCallLog() ? mCallIncomingNumber[phoneId] : ""; @@ -1457,14 +1425,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } mRecords.remove(i); - - // Every time a client that is registrating to always receive the signal - // strength is removed from registry records, we need to check if - // the signal strength decision needs to update on its slot. - if (r.matchTelephonyCallbackEvent( - TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) { - updateReportSignalStrengthDecision(r.subId); - } return; } } @@ -1696,10 +1656,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifySignalStrengthForPhoneId: r=" + r + " subId=" + subId + " phoneId=" + phoneId + " ss=" + signalStrength); } - if ((r.matchTelephonyCallbackEvent( + if (r.matchTelephonyCallbackEvent( TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED) - || r.matchTelephonyCallbackEvent( - TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) && idMatch(r, subId, phoneId)) { try { if (DBG) { @@ -3119,11 +3077,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION, null); } - if ((events.contains(TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED))) { - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH, null); - } - if (isPrivilegedPhoneStatePermissionRequired(events)) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null); @@ -3284,9 +3237,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } } - if (events.contains(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED) - || events.contains( - TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) { + if (events.contains(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED)) { try { if (mSignalStrength[phoneId] != null) { SignalStrength signalStrength = mSignalStrength[phoneId]; diff --git a/telephony/java/android/telephony/SignalStrengthUpdateRequest.java b/telephony/java/android/telephony/SignalStrengthUpdateRequest.java index 41e24ddb3fa6..2ff4ac5e30d3 100644 --- a/telephony/java/android/telephony/SignalStrengthUpdateRequest.java +++ b/telephony/java/android/telephony/SignalStrengthUpdateRequest.java @@ -17,6 +17,8 @@ package android.telephony; import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.os.Binder; import android.os.IBinder; import android.os.Parcel; @@ -66,10 +68,15 @@ public final class SignalStrengthUpdateRequest implements Parcelable { private final IBinder mLiveToken; private SignalStrengthUpdateRequest( - @NonNull List<SignalThresholdInfo> signalThresholdInfos, + @Nullable List<SignalThresholdInfo> signalThresholdInfos, boolean isReportingRequestedWhileIdle, boolean isSystemThresholdReportingRequestedWhileIdle) { - validate(signalThresholdInfos); + // System app (like Bluetooth) can specify the request to report system thresholds while + // device is idle (with permission protection). In this case, the request doesn't need to + // provide a non-empty list of SignalThresholdInfo which is only asked for public apps. + if (!isSystemThresholdReportingRequestedWhileIdle) { + validate(signalThresholdInfos); + } mSignalThresholdInfos = signalThresholdInfos; mIsReportingRequestedWhileIdle = isReportingRequestedWhileIdle; @@ -128,13 +135,15 @@ public final class SignalStrengthUpdateRequest implements Parcelable { /** * Set the builder object if require reporting on the system thresholds when device is idle. * - * This can only used by the system caller. + * <p>This can only used by the system caller. Requires permission + * {@link android.Manifest.permission#LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH}. * * @param isSystemThresholdReportingRequestedWhileIdle true if request reporting on the * system thresholds when device is idle * @return the builder to facilitate the chaining * @hide */ + @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) public @NonNull Builder setSystemThresholdReportingRequestedWhileIdle( boolean isSystemThresholdReportingRequestedWhileIdle) { mIsSystemThresholdReportingRequestedWhileIdle = diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index a1bed29dec70..122f96df4ae6 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -12425,26 +12425,6 @@ public class TelephonyManager { } /** - * Enable or disable signal strength changes from radio will always be reported in any - * condition (e.g. screen is off). This is only allowed for System caller. - * - * @param isEnabled {@code true} for enabling; {@code false} for disabling. - * @hide - */ - @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) - public void setAlwaysReportSignalStrength(boolean isEnabled) { - try { - ITelephony telephony = getITelephony(); - if (telephony != null) { - telephony.setAlwaysReportSignalStrength(getSubId(), isEnabled); - } - } catch (RemoteException ex) { - Log.e(TAG, "setAlwaysReportSignalStrength RemoteException", ex); - ex.rethrowAsRuntimeException(); - } - } - - /** * Get the most recently available signal strength information. * * Get the most recent SignalStrength information reported by the modem. Due diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 63732b5ee444..232a5d881722 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1002,11 +1002,6 @@ interface ITelephony { boolean isManualNetworkSelectionAllowed(int subId); /** - * Enable or disable always reporting signal strength changes from radio. - */ - void setAlwaysReportSignalStrength(int subId, boolean isEnable); - - /** * Get P-CSCF address from PCO after data connection is established or modified. * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN * @param callingPackage The package making the call. |