Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f96a86c9 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 6d80d477: am 0bccd7e7: am 5f28c77b: am d6086125: Fix issue #9074296: Device...

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

* commit '6d80d477':
  Fix issue #9074296: Device Admins can activate in a way...
parents 9cff5e3f 6d80d477
Loading
Loading
Loading
Loading
+34 −2
Original line number Diff line number Diff line
@@ -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 {