private static final String TAG = "DeviceAdminListItem";
+ private final UserHandle mUserHandle;
private final String mKey;
private final DeviceAdminInfo mInfo;
private final CharSequence mName;
public DeviceAdminListItem(Context context, DeviceAdminInfo info) {
mInfo = info;
- mKey = mInfo.getComponent().flattenToString();
+ mUserHandle = new UserHandle(getUserIdFromDeviceAdminInfo(mInfo));
+ mKey = mUserHandle.getIdentifier() + "@" + mInfo.getComponent().flattenToString();
mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
final PackageManager pm = context.getPackageManager();
mName = mInfo.loadLabel(pm);
} catch (Resources.NotFoundException exception) {
Log.w(TAG, "Setting description to null because can't find resource: " + mKey);
}
- mIcon = pm.getUserBadgedIcon(mInfo.loadIcon(pm),
- new UserHandle(DeviceAdminUtils.getUserIdFromDeviceAdminInfo(mInfo)));
+ mIcon = pm.getUserBadgedIcon(mInfo.loadIcon(pm), mUserHandle);
}
@Override
}
public boolean isActive() {
- return mDPM.isAdminActiveAsUser(mInfo.getComponent(),
- DeviceAdminUtils.getUserIdFromDeviceAdminInfo(mInfo));
+ return mDPM.isAdminActiveAsUser(mInfo.getComponent(), getUserIdFromDeviceAdminInfo(mInfo));
}
public Drawable getIcon() {
}
public boolean isEnabled() {
- return !mDPM.isRemovingAdmin(mInfo.getComponent(),
- DeviceAdminUtils.getUserIdFromDeviceAdminInfo(mInfo));
+ return !mDPM.isRemovingAdmin(mInfo.getComponent(), getUserIdFromDeviceAdminInfo(mInfo));
}
public UserHandle getUser() {
- return new UserHandle(DeviceAdminUtils.getUserIdFromDeviceAdminInfo(mInfo));
+ return new UserHandle(getUserIdFromDeviceAdminInfo(mInfo));
}
public Intent getLaunchIntent(Context context) {
return new Intent(context, DeviceAdminAdd.class)
.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mInfo.getComponent());
}
+
+ /**
+ * Extracts the user id from a device admin info object.
+ *
+ * @param adminInfo the device administrator info.
+ * @return identifier of the user associated with the device admin.
+ */
+ private static int getUserIdFromDeviceAdminInfo(DeviceAdminInfo adminInfo) {
+ return UserHandle.getUserId(adminInfo.getActivityInfo().applicationInfo.uid);
+ }
}
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Log.w(TAG, "Unable to load component: " + activeAdmin);
continue;
}
- final DeviceAdminInfo deviceAdminInfo = DeviceAdminUtils.createDeviceAdminInfo(
- mContext, ai);
+ final DeviceAdminInfo deviceAdminInfo = createDeviceAdminInfo(mContext, ai);
if (deviceAdminInfo == null) {
continue;
}
&& alreadyAddedComponents.contains(riComponentName)) {
continue;
}
- DeviceAdminInfo deviceAdminInfo = DeviceAdminUtils.createDeviceAdminInfo(
+ DeviceAdminInfo deviceAdminInfo = createDeviceAdminInfo(
mContext, resolveInfo.activityInfo);
// add only visible ones (note: active admins are added regardless of visibility)
if (deviceAdminInfo != null && deviceAdminInfo.isVisible()) {
}
}
}
+
+ /**
+ * Creates a device admin info object for the resolved intent that points to the component of
+ * the device admin.
+ *
+ * @param ai ActivityInfo for the admin component.
+ * @return new {@link DeviceAdminInfo} object or null if there was an error.
+ */
+ private static DeviceAdminInfo createDeviceAdminInfo(Context context, ActivityInfo ai) {
+ try {
+ return new DeviceAdminInfo(context, ai);
+ } catch (XmlPullParserException | IOException e) {
+ Log.w(TAG, "Skipping " + ai, e);
+ }
+ return null;
+ }
}
+++ /dev/null
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications.specialaccess.deviceadmin;
-
-import android.app.admin.DeviceAdminInfo;
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.os.UserHandle;
-import android.util.Log;
-
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-public class DeviceAdminUtils {
-
- private static final String TAG = "DeviceAdminUtils";
-
- /**
- * Creates a device admin info object for the resolved intent that points to the component of
- * the device admin.
- *
- * @param ai ActivityInfo for the admin component.
- * @return new {@link DeviceAdminInfo} object or null if there was an error.
- */
- public static DeviceAdminInfo createDeviceAdminInfo(Context context, ActivityInfo ai) {
- try {
- return new DeviceAdminInfo(context, ai);
- } catch (XmlPullParserException | IOException e) {
- Log.w(TAG, "Skipping " + ai, e);
- }
- return null;
- }
-
- /**
- * Extracts the user id from a device admin info object.
- *
- * @param adminInfo the device administrator info.
- * @return identifier of the user associated with the device admin.
- */
- public static int getUserIdFromDeviceAdminInfo(DeviceAdminInfo adminInfo) {
- return UserHandle.getUserId(adminInfo.getActivityInfo().applicationInfo.uid);
- }
-}
DeviceAdminListItem item = new DeviceAdminListItem(mContext, mDeviceAdminInfo);
- assertThat(item.getKey()).isEqualTo(cn.flattenToShortString());
+ assertThat(item.getKey()).isEqualTo("0@" + cn.flattenToShortString());
assertThat(item.getName()).isEqualTo(label);
assertThat(item.getDescription()).isEqualTo(description);
}