Avoid triggering device admin settings in non-current user.
Bug: 28953755 Change-Id: Ic9f6f57b1ef4cc1de2d1ea227b17faf4334ffec8
This commit is contained in:
@@ -47,8 +47,7 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
* {@link RestrictionsManager.hasRestrictionsProvider()} returns true, pass in
|
||||
* {@link RESTRICT_IF_OVERRIDABLE} to the constructor instead of a restrictions key.
|
||||
*/
|
||||
public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragment
|
||||
implements View.OnClickListener {
|
||||
public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragment {
|
||||
|
||||
protected static final String RESTRICT_IF_OVERRIDABLE = "restrict_if_overridable";
|
||||
|
||||
@@ -212,22 +211,6 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
||||
return emptyView;
|
||||
}
|
||||
|
||||
private void updateAdminSupportDetailsView() {
|
||||
final EnforcedAdmin admin = getRestrictionEnforcedAdmin();
|
||||
if (admin != null) {
|
||||
final Activity activity = getActivity();
|
||||
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
|
||||
Context.DEVICE_POLICY_SERVICE);
|
||||
CharSequence supportMessage = dpm.getShortSupportMessageForUser(
|
||||
admin.component, admin.userId);
|
||||
if (supportMessage != null) {
|
||||
TextView textView = (TextView) activity.findViewById(R.id.admin_support_msg);
|
||||
textView.setText(supportMessage);
|
||||
}
|
||||
activity.findViewById(R.id.admins_policies_list).setOnClickListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
public EnforcedAdmin getRestrictionEnforcedAdmin() {
|
||||
mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
||||
mRestrictionKey, UserHandle.myUserId());
|
||||
@@ -237,24 +220,6 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
||||
return mEnforcedAdmin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent();
|
||||
if (view.getId() == R.id.admins_policies_list && mEnforcedAdmin != null) {
|
||||
if (mEnforcedAdmin.component != null) {
|
||||
intent.setClass(getActivity(), DeviceAdminAdd.class);
|
||||
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mEnforcedAdmin.component);
|
||||
// DeviceAdminAdd class may need to run as managed profile.
|
||||
getActivity().startActivityAsUser(intent, UserHandle.of(mEnforcedAdmin.userId));
|
||||
} else {
|
||||
intent.setClass(getActivity(), Settings.DeviceAdminSettingsActivity.class);
|
||||
// Activity merges both managed profile and parent users
|
||||
// admins so show as same user as this activity.
|
||||
getActivity().startActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TextView getEmptyTextView() {
|
||||
return mEmptyTextView;
|
||||
}
|
||||
|
@@ -39,7 +39,8 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
|
||||
public class ShowAdminSupportDetailsDialog extends Activity
|
||||
implements DialogInterface.OnDismissListener {
|
||||
@@ -104,13 +105,18 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
||||
return false;
|
||||
}
|
||||
|
||||
private void initializeDialogViews(View root, final ComponentName admin, int userId) {
|
||||
private void initializeDialogViews(View root, ComponentName admin, int userId) {
|
||||
if (admin != null) {
|
||||
if (!RestrictedLockUtils.isAdminInCurrentUserOrProfile(this, admin)
|
||||
|| !RestrictedLockUtils.isCurrentUserOrProfile(this, userId)) {
|
||||
admin = null;
|
||||
} else {
|
||||
ActivityInfo ai = null;
|
||||
try {
|
||||
ai = AppGlobals.getPackageManager().getReceiverInfo(admin, 0 /* flags */, userId);
|
||||
ai = AppGlobals.getPackageManager().getReceiverInfo(admin, 0 /* flags */,
|
||||
userId);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Missing reciever info" , e);
|
||||
Log.w(TAG, "Missing reciever info", e);
|
||||
}
|
||||
if (ai != null) {
|
||||
Drawable icon = ai.loadIcon(getPackageManager());
|
||||
@@ -120,6 +126,7 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
||||
badgedIcon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setAdminSupportDetails(this, root, new EnforcedAdmin(admin, userId), true);
|
||||
}
|
||||
@@ -129,9 +136,15 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
||||
if (enforcedAdmin == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (enforcedAdmin.component != null) {
|
||||
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
|
||||
Context.DEVICE_POLICY_SERVICE);
|
||||
if (!RestrictedLockUtils.isAdminInCurrentUserOrProfile(activity,
|
||||
enforcedAdmin.component) || !RestrictedLockUtils.isCurrentUserOrProfile(
|
||||
activity, enforcedAdmin.userId)) {
|
||||
enforcedAdmin.component = null;
|
||||
} else {
|
||||
if (enforcedAdmin.userId == UserHandle.USER_NULL) {
|
||||
enforcedAdmin.userId = UserHandle.myUserId();
|
||||
}
|
||||
@@ -145,6 +158,7 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
||||
textView.setText(supportMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
root.findViewById(R.id.admins_policies_list).setOnClickListener(
|
||||
new View.OnClickListener() {
|
||||
|
Reference in New Issue
Block a user