diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java index b2145b04594..c0d615c029a 100644 --- a/src/com/android/settings/DeviceAdminAdd.java +++ b/src/com/android/settings/DeviceAdminAdd.java @@ -50,6 +50,8 @@ import android.widget.TextView; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class DeviceAdminAdd extends Activity { static final String TAG = "DeviceAdminAdd"; @@ -104,7 +106,7 @@ public class DeviceAdminAdd extends Activity { finish(); return; } - + ActivityInfo ai; try { ai = getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA); @@ -113,7 +115,37 @@ public class DeviceAdminAdd extends Activity { finish(); return; } - + + // Make sure the given component name is actually a valid device admin. + List avail = getPackageManager().queryBroadcastReceivers( + new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), + 0); + int count = avail == null ? 0 : avail.size(); + boolean found = false; + for (int i=0; i