diff --git a/core/api/current.txt b/core/api/current.txt index 205d57168ac07..e5e7d1d1187e1 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -7362,6 +7362,7 @@ package android.app.admin { method public int getCurrentFailedPasswordAttempts(); method @Nullable public java.util.List getDelegatePackages(@NonNull android.content.ComponentName, @NonNull String); method @NonNull public java.util.List getDelegatedScopes(@Nullable android.content.ComponentName, @NonNull String); + method @Nullable public String getDeviceManagerRoleHolderPackageName(); method public CharSequence getDeviceOwnerLockScreenInfo(); method @Nullable public android.graphics.drawable.Drawable getDrawable(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Callable); method @Nullable public android.graphics.drawable.Drawable getDrawable(@NonNull String, @NonNull String, @NonNull String, @NonNull java.util.concurrent.Callable); diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 490ee0dfd5f18..daf36189ad1b9 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -15635,4 +15635,40 @@ public class DevicePolicyManager { } } } + + /** + * Returns the package name of the device manager role holder. + * + *

If the device manager role holder is not configured for this device, returns {@code null}. + */ + @Nullable + public String getDeviceManagerRoleHolderPackageName() { + String deviceManagerConfig = + mContext.getString(com.android.internal.R.string.config_deviceManager); + return extractPackageNameFromDeviceManagerConfig(deviceManagerConfig); + } + + /** + * Retrieves the package name for a given {@code deviceManagerConfig}. + * + *

Valid configs look like: + *

    + *
  • {@code com.package.name}
  • + *
  • {@code com.package.name:}
  • + *
+ * + *

If the supplied {@code deviceManagerConfig} is {@code null} or empty, returns + * {@code null}. + */ + @Nullable + private String extractPackageNameFromDeviceManagerConfig( + @Nullable String deviceManagerConfig) { + if (TextUtils.isEmpty(deviceManagerConfig)) { + return null; + } + if (deviceManagerConfig.contains(":")) { + return deviceManagerConfig.split(":")[0]; + } + return deviceManagerConfig; + } }