diff --git a/api/current.txt b/api/current.txt index b94813c10aa6b..94deff9a8f928 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5327,6 +5327,7 @@ package android.app.admin { method public android.os.Bundle getApplicationRestrictions(android.content.ComponentName, java.lang.String); method public boolean getBlockUninstall(android.content.ComponentName, java.lang.String); method public boolean getCameraDisabled(android.content.ComponentName); + method public boolean getCrossProfileCallerIdDisabled(android.content.ComponentName); method public int getCurrentFailedPasswordAttempts(); method public int getKeyguardDisabledFeatures(android.content.ComponentName); method public int getMaximumFailedPasswordsForWipe(android.content.ComponentName); @@ -5366,6 +5367,7 @@ package android.app.admin { method public int setApplicationsBlocked(android.content.ComponentName, android.content.Intent, boolean); method public void setBlockUninstall(android.content.ComponentName, java.lang.String, boolean); method public void setCameraDisabled(android.content.ComponentName, boolean); + method public void setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean); method public void setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String); method public void setKeyguardDisabledFeatures(android.content.ComponentName, int); method public void setLockTaskPackages(java.lang.String[]) throws java.lang.SecurityException; diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 7a7fdecb160b8..71ad0c9194442 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -2269,6 +2269,45 @@ public class DevicePolicyManager { } } + /** + * Called by a profile owner to set whether caller-Id information from the managed + * profile will be shown for incoming calls. + * + *
The calling device admin must be a profile owner. If it is not, a + * security exception will be thrown. + * + * @param who Which {@link DeviceAdminReceiver} this request is associated with. + * @param disabled If true caller-Id information in the managed profile is not displayed. + */ + public void setCrossProfileCallerIdDisabled(ComponentName who, boolean disabled) { + if (mService != null) { + try { + mService.setCrossProfileCallerIdDisabled(who, disabled); + } catch (RemoteException e) { + Log.w(TAG, "Failed talking with device policy service", e); + } + } + } + + /** + * Determine whether or not caller-Id information has been disabled. + * + *
The calling device admin must be a profile owner. If it is not, a
+ * security exception will be thrown.
+ *
+ * @param who Which {@link DeviceAdminReceiver} this request is associated with.
+ */
+ public boolean getCrossProfileCallerIdDisabled(ComponentName who) {
+ if (mService != null) {
+ try {
+ return mService.getCrossProfileCallerIdDisabled(who);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed talking with device policy service", e);
+ }
+ }
+ return false;
+ }
+
/**
* Called by the profile owner so that some intents sent in the managed profile can also be
* resolved in the parent, or vice versa.
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 54d1eed846939..9b1979f7b732e 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -162,4 +162,8 @@ interface IDevicePolicyManager {
void setBlockUninstall(in ComponentName admin, in String packageName, boolean blockUninstall);
boolean getBlockUninstall(in ComponentName admin, in String packageName);
+
+ void setCrossProfileCallerIdDisabled(in ComponentName who, boolean disabled);
+ boolean getCrossProfileCallerIdDisabled(in ComponentName who);
+ boolean getCrossProfileCallerIdDisabledForUser(int userId);
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index e40c812d6d574..12ed920fe32bc 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -257,6 +257,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
static class ActiveAdmin {
private static final String TAG_DISABLE_KEYGUARD_FEATURES = "disable-keyguard-features";
private static final String TAG_DISABLE_CAMERA = "disable-camera";
+ private static final String TAG_DISABLE_CALLER_ID = "disable-caller-id";
private static final String TAG_DISABLE_ACCOUNT_MANAGEMENT = "disable-account-management";
private static final String TAG_ACCOUNT_TYPE = "account-type";
private static final String TAG_ENCRYPTION_REQUESTED = "encryption-requested";
@@ -324,6 +325,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
boolean encryptionRequested = false;
boolean disableCamera = false;
+ boolean disableCallerId = false;
Set