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 RestrictionsManager.hasRestrictionsProvider()} returns true, pass in
|
||||||
* {@link RESTRICT_IF_OVERRIDABLE} to the constructor instead of a restrictions key.
|
* {@link RESTRICT_IF_OVERRIDABLE} to the constructor instead of a restrictions key.
|
||||||
*/
|
*/
|
||||||
public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragment
|
public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragment {
|
||||||
implements View.OnClickListener {
|
|
||||||
|
|
||||||
protected static final String RESTRICT_IF_OVERRIDABLE = "restrict_if_overridable";
|
protected static final String RESTRICT_IF_OVERRIDABLE = "restrict_if_overridable";
|
||||||
|
|
||||||
@@ -212,22 +211,6 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
|||||||
return emptyView;
|
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() {
|
public EnforcedAdmin getRestrictionEnforcedAdmin() {
|
||||||
mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
|
||||||
mRestrictionKey, UserHandle.myUserId());
|
mRestrictionKey, UserHandle.myUserId());
|
||||||
@@ -237,24 +220,6 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
|
|||||||
return mEnforcedAdmin;
|
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() {
|
public TextView getEmptyTextView() {
|
||||||
return mEmptyTextView;
|
return mEmptyTextView;
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,8 @@ import android.view.View;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
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
|
public class ShowAdminSupportDetailsDialog extends Activity
|
||||||
implements DialogInterface.OnDismissListener {
|
implements DialogInterface.OnDismissListener {
|
||||||
@@ -104,13 +105,18 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
|||||||
return false;
|
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 (admin != null) {
|
||||||
|
if (!RestrictedLockUtils.isAdminInCurrentUserOrProfile(this, admin)
|
||||||
|
|| !RestrictedLockUtils.isCurrentUserOrProfile(this, userId)) {
|
||||||
|
admin = null;
|
||||||
|
} else {
|
||||||
ActivityInfo ai = null;
|
ActivityInfo ai = null;
|
||||||
try {
|
try {
|
||||||
ai = AppGlobals.getPackageManager().getReceiverInfo(admin, 0 /* flags */, userId);
|
ai = AppGlobals.getPackageManager().getReceiverInfo(admin, 0 /* flags */,
|
||||||
|
userId);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(TAG, "Missing reciever info" , e);
|
Log.w(TAG, "Missing reciever info", e);
|
||||||
}
|
}
|
||||||
if (ai != null) {
|
if (ai != null) {
|
||||||
Drawable icon = ai.loadIcon(getPackageManager());
|
Drawable icon = ai.loadIcon(getPackageManager());
|
||||||
@@ -120,6 +126,7 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
|||||||
badgedIcon);
|
badgedIcon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setAdminSupportDetails(this, root, new EnforcedAdmin(admin, userId), true);
|
setAdminSupportDetails(this, root, new EnforcedAdmin(admin, userId), true);
|
||||||
}
|
}
|
||||||
@@ -129,9 +136,15 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
|||||||
if (enforcedAdmin == null) {
|
if (enforcedAdmin == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enforcedAdmin.component != null) {
|
if (enforcedAdmin.component != null) {
|
||||||
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
|
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
|
||||||
Context.DEVICE_POLICY_SERVICE);
|
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) {
|
if (enforcedAdmin.userId == UserHandle.USER_NULL) {
|
||||||
enforcedAdmin.userId = UserHandle.myUserId();
|
enforcedAdmin.userId = UserHandle.myUserId();
|
||||||
}
|
}
|
||||||
@@ -145,6 +158,7 @@ public class ShowAdminSupportDetailsDialog extends Activity
|
|||||||
textView.setText(supportMessage);
|
textView.setText(supportMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
root.findViewById(R.id.admins_policies_list).setOnClickListener(
|
root.findViewById(R.id.admins_policies_list).setOnClickListener(
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
|
Reference in New Issue
Block a user