diff options
| -rw-r--r-- | core/api/system-current.txt | 3 | ||||
| -rw-r--r-- | core/api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 11 | ||||
| -rw-r--r-- | core/res/res/values/strings.xml | 6 | ||||
| -rw-r--r-- | data/etc/privapp-permissions-platform.xml | 1 | ||||
| -rw-r--r-- | packages/Shell/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | telephony/common/com/android/internal/telephony/TelephonyPermissions.java | 3 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 12 |
8 files changed, 31 insertions, 8 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 9077d02be8be..2e25e00e7bc9 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -12,6 +12,7 @@ package android { field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO"; field public static final String ACCESS_FPS_COUNTER = "android.permission.ACCESS_FPS_COUNTER"; field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS"; + field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ACCESS_LAST_KNOWN_CELL_ID = "android.permission.ACCESS_LAST_KNOWN_CELL_ID"; field public static final String ACCESS_LOCUS_ID_USAGE_STATS = "android.permission.ACCESS_LOCUS_ID_USAGE_STATS"; field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION"; field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP"; @@ -14635,6 +14636,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst(); + method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @Nullable @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, "com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID"}) public android.telephony.CellIdentity getLastKnownCellIdentity(); method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping(); method public int getMaxNumberOfSimultaneouslyActiveSims(); method public static long getMaxNumberVerificationTimeoutMillis(); @@ -14736,6 +14738,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>); method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int); + method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(android.Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios(); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult supplyIccLockPin(@NonNull String); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult supplyIccLockPuk(@NonNull String, @NonNull String); diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 2e22071d72ad..0bba4089d540 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3292,7 +3292,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String); - method @RequiresPermission(android.Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean); + method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(android.Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean); field public static final int HAL_SERVICE_DATA = 1; // 0x1 field public static final int HAL_SERVICE_IMS = 7; // 0x7 field public static final int HAL_SERVICE_MESSAGING = 2; // 0x2 diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index ef6caefd3daf..96206ca11ce8 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3042,6 +3042,17 @@ <permission android:name="android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE" android:protectionLevel="internal|role" /> + <!-- Used to provide the Telecom framework with access to the last known call ID. + <p>Protection level: signature + @SystemApi + @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") + @hide + --> + <permission android:name="android.permission.ACCESS_LAST_KNOWN_CELL_ID" + android:protectionLevel="signature" + android:label="@string/permlab_accessLastKnownCellId" + android:description="@string/permdesc_accessLastKnownCellId"/> + <!-- ================================== --> <!-- Permissions for sdcard interaction --> <!-- ================================== --> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 542e9d6f936f..383c8bce4d3b 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1075,6 +1075,12 @@ <string name="permdesc_manageOngoingCalls">Allows an app to see details about ongoing calls on your device and to control these calls.</string> + <!-- Title for an application permission, listed so that the user can access the last known cell id provided by telephony. --> + <string name="permlab_accessLastKnownCellId">Access last known cell identity.</string> + <!-- Description on an application permission, listed so that the user can access the last known cell id provided by telephony --> + <string name="permdesc_accessLastKnownCellId">Allows an app to access to the last known + cell identity provided by telephony.</string> + <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_readCellBroadcasts">read cell broadcast messages</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index a1ea2b8ce032..453d862680c9 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -511,6 +511,7 @@ applications that come with the platform <permission name="android.permission.READ_SAFETY_CENTER_STATUS" /> <!-- Permission required for CTS test - CtsTelephonyTestCases --> <permission name="android.permission.BIND_TELECOM_CONNECTION_SERVICE" /> + <permission name="android.permission.ACCESS_LAST_KNOWN_CELL_ID" /> <!-- Permission required for CTS test - CtsAppTestCases --> <permission name="android.permission.CAPTURE_MEDIA_OUTPUT" /> <permission name="android.permission.CAPTURE_TUNER_AUDIO_INPUT" /> diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 507d9c467d68..88cacec153d6 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -748,6 +748,7 @@ <uses-permission android:name="android.permission.BIND_TELECOM_CONNECTION_SERVICE" /> <uses-permission android:name="android.permission.MODIFY_CELL_BROADCASTS" /> <uses-permission android:name="android.permission.SATELLITE_COMMUNICATION" /> + <uses-permission android:name="android.permission.ACCESS_LAST_KNOWN_CELL_ID" /> <!-- Permission required for CTS test - CtsPersistentDataBlockManagerTestCases --> <uses-permission android:name="android.permission.ACCESS_PDB_STATE" /> diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java index 250c3a54c928..9e1e699e4b1d 100644 --- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java @@ -601,8 +601,9 @@ public final class TelephonyPermissions { * * @return true if caller has ACCESS_LAST_KNOWN_CELL_ID permission else false. */ + @RequiresPermission(Manifest.permission.ACCESS_LAST_KNOWN_CELL_ID) public static boolean checkLastKnownCellIdAccessPermission(Context context) { - return context.checkCallingOrSelfPermission("android.permission.ACCESS_LAST_KNOWN_CELL_ID") + return context.checkCallingOrSelfPermission(Manifest.permission.ACCESS_LAST_KNOWN_CELL_ID) == PackageManager.PERMISSION_GRANTED; } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 1b47dfe0eba1..7c83f82bc301 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -18500,8 +18500,8 @@ public class TelephonyManager { /** * Get last known cell identity. - * Require {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and - * com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID, otherwise throws SecurityException. + * Require appropriate permissions, otherwise throws SecurityException. + * * If there is current registered network this value will be same as the registered cell * identity. If the device goes out of service the previous cell identity is cached and * will be returned. If the cache age of the Cell identity is more than 24 hours @@ -18509,6 +18509,8 @@ public class TelephonyManager { * @return last known cell identity {@CellIdentity}. * @hide */ + @SystemApi + @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES) @RequiresPermission(allOf = {Manifest.permission.ACCESS_FINE_LOCATION, "com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID"}) public @Nullable CellIdentity getLastKnownCellIdentity() { @@ -18586,13 +18588,11 @@ public class TelephonyManager { * an overall "device can make voice calls" boolean, they can use {@link * ServiceState#getNetworkRegistrationInfo} to check CS registration state. * - * <p>TODO(b/215240050) In the future, this API will be removed and replaced with a new superset - * API to disentangle the "true" {@link ServiceState} meaning of "this is the connection status - * to the tower" from IMS registration state and over-the-top voice calling capabilities. - * * @hide */ @TestApi + @SystemApi + @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES) @RequiresPermission(Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean hasService) { try { |