am 0bccd7e7: am 5f28c77b: am d6086125: Fix issue #9074296: Device Admins can activate in a way...

* commit '0bccd7e7f4d6fe4d5c7e1fef151f50ebed7addaf':
  Fix issue #9074296: Device Admins can activate in a way...
This commit is contained in:
Dianne Hackborn
2013-06-06 12:29:04 -07:00
committed by Android Git Automerger

View File

@@ -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";
@@ -114,6 +116,36 @@ public class DeviceAdminAdd extends Activity {
return;
}
// Make sure the given component name is actually a valid device admin.
List<ResolveInfo> 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<count; i++) {
ResolveInfo ri = avail.get(i);
if (ai.packageName.equals(ri.activityInfo.packageName)
&& ai.name.equals(ri.activityInfo.name)) {
try {
// We didn't retrieve the meta data for all possible matches, so
// need to use the activity info of this specific one that was retrieved.
ri.activityInfo = ai;
DeviceAdminInfo dpi = new DeviceAdminInfo(this, ri);
found = true;
} catch (XmlPullParserException e) {
Log.w(TAG, "Bad " + ri.activityInfo, e);
} catch (IOException e) {
Log.w(TAG, "Bad " + ri.activityInfo, e);
}
break;
}
}
if (!found) {
Log.w(TAG, "Request to add invalid device admin: " + cn);
finish();
return;
}
ResolveInfo ri = new ResolveInfo();
ri.activityInfo = ai;
try {