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

Commit a433fd24 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Avoid triggering device admin settings in non-current user." into nyc-dev

parents 3a870509 8b72e563
Loading
Loading
Loading
Loading
+1 −36
Original line number Diff line number Diff line
@@ -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 −25
Original line number Diff line number Diff line
@@ -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,11 +105,16 @@ 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);
                }
@@ -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() {