summaryrefslogtreecommitdiff
path: root/framework-s/java
diff options
context:
space:
mode:
author Benjamin Löhner <bloehner@google.com> 2024-01-26 14:38:06 +0000
committer Benjamin Löhner <bloehner@google.com> 2024-02-14 01:26:25 +0000
commit4675be8559d10d1fb60bfde9bfe4214ec5ad2c64 (patch)
tree0cf1a7e3b90d20329861cd115166d28cc6376cd4 /framework-s/java
parent516e07ac988a28443fb579ba945e82909c5de6d9 (diff)
Add getEmergencyRoleHolder SystemApi to RoleManager.
This API then enables TelephonyManager to expose the emergency role holder to priviliged clients via getEmergencyAssistancePackageName. Bug: 323157319 Test: atest RoleManagerTest LOW_COVERAGE_REASON=Flagged test added but flag not enabled Change-Id: I91089701248a32a720b488147405b2566cca2be9
Diffstat (limited to 'framework-s/java')
-rw-r--r--framework-s/java/android/app/role/IRoleManager.aidl2
-rw-r--r--framework-s/java/android/app/role/RoleManager.java22
2 files changed, 24 insertions, 0 deletions
diff --git a/framework-s/java/android/app/role/IRoleManager.aidl b/framework-s/java/android/app/role/IRoleManager.aidl
index 0aef871e6..522967630 100644
--- a/framework-s/java/android/app/role/IRoleManager.aidl
+++ b/framework-s/java/android/app/role/IRoleManager.aidl
@@ -74,6 +74,8 @@ interface IRoleManager {
String getSmsRoleHolder(int userId);
+ String getEmergencyRoleHolder(int userId);
+
boolean isRoleVisibleAsUser(in String roleName, int userId);
boolean isApplicationVisibleForRoleAsUser(in String roleName, in String packageName,
diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java
index fe27d50f3..4b8c9b388 100644
--- a/framework-s/java/android/app/role/RoleManager.java
+++ b/framework-s/java/android/app/role/RoleManager.java
@@ -975,6 +975,28 @@ public final class RoleManager {
}
/**
+ * Allows getting the role holder for {@link #ROLE_EMERGENCY} without requiring
+ * {@link Manifest.permission#OBSERVE_ROLE_HOLDERS}.
+ *
+ * @param userId the user ID to get the default emergency package for
+ * @return the package name of the default emergency app, or {@code null} if none
+ *
+ * @hide
+ */
+ @FlaggedApi(Flags.FLAG_GET_EMERGENCY_ROLE_HOLDER_API_ENABLED)
+ @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
+ @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ @Nullable
+ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+ public String getEmergencyRoleHolder(@UserIdInt int userId) {
+ try {
+ return mService.getEmergencyRoleHolder(userId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Check whether a role should be visible to user.
*
* @param roleName name of the role to check for