Merge "Update Device Admin Info Settings text for a financed device" into sc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6dfae4b..01c38d8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10522,6 +10522,9 @@
     <string name="admin_device_owner_message">Your admin can monitor and manage apps and data
         associated with this device, including settings, permissions, corporate access,
         network activity, and the device\'s location information.</string>
+    <!-- Shown in admin details page to warn user about policies the admin can set on a financed device. [CHAR LIMIT=NONE] -->
+    <string name="admin_financed_message">Your device admin may be able to access data associated
+        with this device and change this device\’s settings.</string>
 
     <!-- Turn off a conditional state of the device (e.g. airplane mode, or hotspot) [CHAR LIMIT=30] -->
     <string name="condition_turn_off">Turn off</string>
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
index 7c8b96f..1fe3f17 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.applications.specialaccess.deviceadmin;
 
+import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
+
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.AppOpsManager;
@@ -661,7 +663,11 @@
                     mAdminWarning.setText(R.string.admin_profile_owner_user_message);
                 } else {
                     // Show device owner description.
-                    mAdminWarning.setText(R.string.admin_device_owner_message);
+                    if (isFinancedDevice()) {
+                        mAdminWarning.setText(R.string.admin_financed_message);
+                    } else {
+                        mAdminWarning.setText(R.string.admin_device_owner_message);
+                    }
                 }
                 mActionButton.setText(R.string.remove_device_admin);
                 mActionButton.setEnabled(false);
@@ -759,6 +765,11 @@
         return info != null ? info.isManagedProfile() : false;
     }
 
+    private boolean isFinancedDevice() {
+        return mDPM.isDeviceManaged() && mDPM.getDeviceOwnerType(
+                mDPM.getDeviceOwnerComponentOnAnyUser()) == DEVICE_OWNER_TYPE_FINANCED;
+    }
+
     /**
      * @return an {@link Optional} containing the admin with a given package name, if it exists,
      *         or {@link Optional#empty()} otherwise.