Add disabled by policy empty views to more screens.

Bug: 27214401
Change-Id: I6cd4292a63610671070bf2134105e9e348c3ab32
This commit is contained in:
Sudheer Shanka
2016-02-16 14:19:32 +00:00
parent 5d8e963c83
commit 7dbbe13168
16 changed files with 191 additions and 128 deletions

View File

@@ -27,6 +27,7 @@ import android.os.Bundle;
import android.os.PersistableBundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
@@ -69,6 +70,9 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
private EnforcedAdmin mEnforcedAdmin;
private TextView mEmptyTextView;
private boolean mOnlyAvailableForAdmins = false;
private boolean mIsAdminUser;
// Receiver to clear pin status when the screen is turned off.
private BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
@Override
@@ -96,6 +100,7 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
mRestrictionsManager = (RestrictionsManager) getSystemService(Context.RESTRICTIONS_SERVICE);
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
mIsAdminUser = mUserManager.isAdminUser();
if (icicle != null) {
mChallengeSucceeded = icicle.getBoolean(KEY_CHALLENGE_SUCCEEDED, false);
@@ -198,26 +203,24 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
return restricted && mRestrictionsManager.hasRestrictionsProvider();
}
protected View initAdminSupportDetailsView() {
return null;
private View initAdminSupportDetailsView() {
return getActivity().findViewById(R.id.admin_support_details);
}
protected TextView initEmptyTextView() {
return null;
TextView emptyView = (TextView) getActivity().findViewById(android.R.id.empty);
emptyView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
return emptyView;
}
private void updateAdminSupportDetailsView() {
mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
mRestrictionKey, UserHandle.myUserId());
if (mEnforcedAdmin != null) {
final EnforcedAdmin admin = getRestrictionEnforcedAdmin();
if (admin != null) {
final Activity activity = getActivity();
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
Context.DEVICE_POLICY_SERVICE);
if (mEnforcedAdmin.userId == UserHandle.USER_NULL) {
mEnforcedAdmin.userId = UserHandle.myUserId();
}
CharSequence supportMessage = dpm.getShortSupportMessageForUser(
mEnforcedAdmin.component, mEnforcedAdmin.userId);
admin.component, admin.userId);
if (supportMessage != null) {
TextView textView = (TextView) activity.findViewById(R.id.admin_support_msg);
textView.setText(supportMessage);
@@ -226,6 +229,15 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
}
}
public EnforcedAdmin getRestrictionEnforcedAdmin() {
mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
mRestrictionKey, UserHandle.myUserId());
if (mEnforcedAdmin != null && mEnforcedAdmin.userId == UserHandle.USER_NULL) {
mEnforcedAdmin.userId = UserHandle.myUserId();
}
return mEnforcedAdmin;
}
@Override
public void onClick(View view) {
Intent intent = new Intent();
@@ -252,7 +264,9 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
protected void onDataSetChanged() {
highlightPreferenceIfNeeded();
if (mAdminSupportDetails != null && isUiRestrictedByOnlyAdmin()) {
updateAdminSupportDetailsView();
final EnforcedAdmin admin = getRestrictionEnforcedAdmin();
ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(),
mAdminSupportDetails, admin, false);
setEmptyView(mAdminSupportDetails);
} else if (mEmptyTextView != null) {
setEmptyView(mEmptyTextView);
@@ -260,15 +274,20 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm
super.onDataSetChanged();
}
public void setIfOnlyAvailableForAdmins(boolean onlyForAdmins) {
mOnlyAvailableForAdmins = onlyForAdmins;
}
/**
* Returns whether restricted or actionable UI elements should be removed or disabled.
*/
protected boolean isUiRestricted() {
return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded();
return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded()
|| (!mIsAdminUser && mOnlyAvailableForAdmins);
}
protected boolean isUiRestrictedByOnlyAdmin() {
return isUiRestricted() && !mUserManager.hasBaseUserRestriction(mRestrictionKey,
UserHandle.of(UserHandle.myUserId()));
UserHandle.of(UserHandle.myUserId())) && (mIsAdminUser || !mOnlyAvailableForAdmins);
}
}