am f162efee: Prompt to set a screen lock when adding a restricted profile

* commit 'f162efee8995c8d7a26992e72fe771c41b790e39':
  Prompt to set a screen lock when adding a restricted profile
This commit is contained in:
Amith Yamasani
2013-04-29 14:15:57 -07:00
committed by Android Git Automerger
2 changed files with 54 additions and 2 deletions

View File

@@ -16,7 +16,8 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingStart="16dip" android:paddingStart="16dip"
android:paddingEnd="16dip" android:paddingEnd="16dip"
android:paddingTop="8dip" android:paddingTop="8dip"

View File

@@ -18,9 +18,11 @@ package com.android.settings.users;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.app.Activity;
import android.app.ActivityManagerNative; import android.app.ActivityManagerNative;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@@ -55,6 +57,9 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.SimpleAdapter; import android.widget.SimpleAdapter;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import com.android.settings.OwnerInfoSettings; import com.android.settings.OwnerInfoSettings;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SelectableEditTextPreference; import com.android.settings.SelectableEditTextPreference;
@@ -89,6 +94,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final int DIALOG_SETUP_PROFILE = 4; private static final int DIALOG_SETUP_PROFILE = 4;
private static final int DIALOG_USER_CANNOT_MANAGE = 5; private static final int DIALOG_USER_CANNOT_MANAGE = 5;
private static final int DIALOG_CHOOSE_USER_TYPE = 6; private static final int DIALOG_CHOOSE_USER_TYPE = 6;
private static final int DIALOG_NEED_LOCKSCREEN = 7;
private static final int MESSAGE_UPDATE_LIST = 1; private static final int MESSAGE_UPDATE_LIST = 1;
private static final int MESSAGE_SETUP_USER = 2; private static final int MESSAGE_SETUP_USER = 2;
@@ -97,6 +103,8 @@ public class UserSettings extends SettingsPreferenceFragment
private static final int USER_TYPE_USER = 1; private static final int USER_TYPE_USER = 1;
private static final int USER_TYPE_RESTRICTED_PROFILE = 2; private static final int USER_TYPE_RESTRICTED_PROFILE = 2;
private static final int REQUEST_CHOOSE_LOCK = 10;
private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED = private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED =
"key_add_user_long_message_displayed"; "key_add_user_long_message_displayed";
@@ -275,6 +283,31 @@ public class UserSettings extends SettingsPreferenceFragment
} }
} }
private boolean hasLockscreenSecurity() {
LockPatternUtils lpu = new LockPatternUtils(getActivity());
return lpu.isLockPasswordEnabled() || lpu.isLockPatternEnabled();
}
private void launchChooseLockscreen() {
Intent chooseLockIntent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
chooseLockIntent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
startActivityForResult(chooseLockIntent, REQUEST_CHOOSE_LOCK);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CHOOSE_LOCK) {
if (resultCode != Activity.RESULT_CANCELED && hasLockscreenSecurity()) {
addUserNow(USER_TYPE_RESTRICTED_PROFILE);
} else {
showDialog(DIALOG_NEED_LOCKSCREEN);
}
}
}
private void onAddUserClicked(int userType) { private void onAddUserClicked(int userType) {
synchronized (mUserLock) { synchronized (mUserLock) {
if (mRemovingUserId == -1 && !mAddingUser) { if (mRemovingUserId == -1 && !mAddingUser) {
@@ -283,7 +316,11 @@ public class UserSettings extends SettingsPreferenceFragment
showDialog(DIALOG_ADD_USER); showDialog(DIALOG_ADD_USER);
break; break;
case USER_TYPE_RESTRICTED_PROFILE: case USER_TYPE_RESTRICTED_PROFILE:
if (hasLockscreenSecurity()) {
addUserNow(USER_TYPE_RESTRICTED_PROFILE); addUserNow(USER_TYPE_RESTRICTED_PROFILE);
} else {
showDialog(DIALOG_NEED_LOCKSCREEN);
}
break; break;
} }
} }
@@ -489,6 +526,20 @@ public class UserSettings extends SettingsPreferenceFragment
.create(); .create();
return dlg; return dlg;
} }
case DIALOG_NEED_LOCKSCREEN: {
Dialog dlg = new AlertDialog.Builder(context)
.setMessage(R.string.user_need_lock_message)
.setPositiveButton(R.string.user_set_lock_button,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
launchChooseLockscreen();
}
})
.setNegativeButton(android.R.string.cancel, null)
.create();
return dlg;
}
default: default:
return null; return null;
} }