127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk/* 227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Copyright (C) 2014 The Android Open Source Project 327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * 427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * you may not use this file except in compliance with the License. 627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * You may obtain a copy of the License at 727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * 827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * 1027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Unless required by applicable law or agreed to in writing, software 1127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 1227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * See the License for the specific language governing permissions and 1427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * limitations under the License. 1527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */ 167d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangpackage com.android.settings.security; 1727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 1878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport android.app.admin.DevicePolicyManager; 1927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.content.Context; 2078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport android.content.Intent; 2127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.os.Bundle; 225437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roosimport android.os.UserHandle; 237d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport android.provider.SearchIndexableResource; 2427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.provider.Settings; 2539b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v14.preference.SwitchPreference; 2639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference; 2739b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference.OnPreferenceChangeListener; 2839b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceScreen; 2927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.view.LayoutInflater; 3027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.view.View; 310c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monkimport android.view.ViewGroup; 3227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.widget.Switch; 3327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 34265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto.MetricsEvent; 3578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport com.android.internal.widget.LockPatternUtils; 367d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.R; 377d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.SettingsActivity; 387d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.SettingsPreferenceFragment; 392eb170cd6ff43db01dc0ff3c1fcac5ebba4489deMaurice Lamimport com.android.settings.password.ChooseLockGeneric; 4027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.search.BaseSearchIndexProvider; 4127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.search.Indexable; 4227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.widget.SwitchBar; 4327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 447d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport java.util.Arrays; 4578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport java.util.List; 4678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 4727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk/** 4827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Screen pinning settings. 4927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */ 5027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkpublic class ScreenPinningSettings extends SettingsPreferenceFragment 5127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk implements SwitchBar.OnSwitchChangeListener, Indexable { 5227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 5378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private static final CharSequence KEY_USE_SCREEN_LOCK = "use_screen_lock"; 5478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private static final int CHANGE_LOCK_METHOD_REQUEST = 43; 5578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 5627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk private SwitchBar mSwitchBar; 5778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private SwitchPreference mUseScreenLock; 5878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private LockPatternUtils mLockPatternUtils; 5927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 6027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk @Override 616507613ebcd22e4691c2af92a5c161bd327db336Fan Zhang public int getMetricsCategory() { 629d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren return MetricsEvent.SCREEN_PINNING; 638a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren } 648a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren 658a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren @Override 6627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk public void onActivityCreated(Bundle savedInstanceState) { 6727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk super.onActivityCreated(savedInstanceState); 6827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 6927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk final SettingsActivity activity = (SettingsActivity) getActivity(); 704a01283309f737395a01f0fae68a369dc537a8daDoris Ling activity.setTitle(R.string.screen_pinning_title); 7178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mLockPatternUtils = new LockPatternUtils(activity); 7278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 7327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 7427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk mSwitchBar = activity.getSwitchBar(); 7527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk mSwitchBar.addOnSwitchChangeListener(this); 7627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk mSwitchBar.show(); 7778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mSwitchBar.setChecked(isLockToAppEnabled(getActivity())); 7827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 7927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 8027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk @Override 81e0b0e9f9025038d72f8129606cc1f432afcb54e0Fan Zhang public int getHelpResource() { 82179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang return R.string.help_url_screen_pinning; 83179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang } 84179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang 85179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang @Override 860c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk public void onViewCreated(View view, Bundle savedInstanceState) { 870c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk super.onViewCreated(view, savedInstanceState); 880c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk ViewGroup parent = (ViewGroup) view.findViewById(android.R.id.list_container); 890c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk View emptyView = LayoutInflater.from(getContext()) 900c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk .inflate(R.layout.screen_pinning_instructions, parent, false); 910c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk parent.addView(emptyView); 920c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk setEmptyView(emptyView); 930c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk } 940c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk 950c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk @Override 9627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk public void onDestroyView() { 9727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk super.onDestroyView(); 9827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 9927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk mSwitchBar.removeOnSwitchChangeListener(this); 10027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk mSwitchBar.hide(); 10127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 10227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 10378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private static boolean isLockToAppEnabled(Context context) { 10478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return Settings.System.getInt(context.getContentResolver(), 10578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk Settings.System.LOCK_TO_APP_ENABLED, 0) != 0; 10627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 10727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 10827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk private void setLockToAppEnabled(boolean isEnabled) { 10927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk Settings.System.putInt(getContentResolver(), Settings.System.LOCK_TO_APP_ENABLED, 11027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk isEnabled ? 1 : 0); 11139ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk if (isEnabled) { 11239ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk // Set the value to match what we have defaulted to in the UI. 11339ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk setScreenLockUsedSetting(isScreenLockUsed()); 11439ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk } 11527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 11627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 11778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private boolean isScreenLockUsed() { 11878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk int def = getCurrentSecurityTitle() != R.string.screen_pinning_unlock_none ? 1 : 0; 11978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return Settings.Secure.getInt(getContentResolver(), 12078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, def) != 0; 12178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 12278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 12378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private boolean setScreenLockUsed(boolean isEnabled) { 12478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk if (isEnabled) { 12578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity()); 1265437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos int passwordQuality = lockPatternUtils 1275437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos .getKeyguardStoredPasswordQuality(UserHandle.myUserId()); 1285437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos if (passwordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { 12978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk Intent chooseLockIntent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); 13078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk chooseLockIntent.putExtra( 13178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY, 13278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); 13378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk startActivityForResult(chooseLockIntent, CHANGE_LOCK_METHOD_REQUEST); 13478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return false; 13578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 13678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 13739ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk setScreenLockUsedSetting(isEnabled); 13839ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk return true; 13939ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk } 14039ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk 14139ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk private void setScreenLockUsedSetting(boolean isEnabled) { 14278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, 14378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk isEnabled ? 1 : 0); 14478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 14578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 14678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk @Override 14778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk public void onActivityResult(int requestCode, int resultCode, Intent data) { 14878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk super.onActivityResult(requestCode, resultCode, data); 14978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk if (requestCode == CHANGE_LOCK_METHOD_REQUEST) { 15078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity()); 1515437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos boolean validPassQuality = lockPatternUtils.getKeyguardStoredPasswordQuality( 1525437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos UserHandle.myUserId()) 15378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; 15478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk setScreenLockUsed(validPassQuality); 15578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk // Make sure the screen updates. 15678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mUseScreenLock.setChecked(validPassQuality); 15778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 15878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 15978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 16078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk private int getCurrentSecurityTitle() { 1615437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos int quality = mLockPatternUtils.getKeyguardStoredPasswordQuality( 1625437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos UserHandle.myUserId()); 16378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk switch (quality) { 16478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: 16578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX: 16678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return R.string.screen_pinning_unlock_pin; 16778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: 16878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: 16978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: 170e7d6e4ddb2371dc49015e17e2d6b9dc604fbbf58Toni Barzic case DevicePolicyManager.PASSWORD_QUALITY_MANAGED: 17178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return R.string.screen_pinning_unlock_password; 17278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: 1735437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos if (mLockPatternUtils.isLockPatternEnabled(UserHandle.myUserId())) { 17478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return R.string.screen_pinning_unlock_pattern; 17578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 17678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 17778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return R.string.screen_pinning_unlock_none; 17878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 17978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 18027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk /** 18127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Listens to the state change of the lock-to-app master switch. 18227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */ 18327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk @Override 18427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk public void onSwitchChanged(Switch switchView, boolean isChecked) { 18527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk setLockToAppEnabled(isChecked); 18678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk updateDisplay(); 18778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 18878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 18978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk public void updateDisplay() { 19078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk PreferenceScreen root = getPreferenceScreen(); 19178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk if (root != null) { 19278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk root.removeAll(); 19378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 19478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk if (isLockToAppEnabled(getActivity())) { 19578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk addPreferencesFromResource(R.xml.screen_pinning_settings); 19678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk root = getPreferenceScreen(); 19778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk 19878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mUseScreenLock = (SwitchPreference) root.findPreference(KEY_USE_SCREEN_LOCK); 19978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mUseScreenLock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 20078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk @Override 20178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk public boolean onPreferenceChange(Preference preference, Object newValue) { 20278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk return setScreenLockUsed((boolean) newValue); 20378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 20478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk }); 20578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mUseScreenLock.setChecked(isScreenLockUsed()); 20678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk mUseScreenLock.setTitle(getCurrentSecurityTitle()); 20778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk } 20827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 20927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 21027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk /** 21127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * For search 21227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */ 21327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 21427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk new BaseSearchIndexProvider() { 21527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk 2167d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang @Override 2177d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, 2187d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang boolean enabled) { 2197d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang final SearchIndexableResource sir = new SearchIndexableResource(context); 2207d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang sir.xmlResId = R.xml.screen_pinning_settings; 2217d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang return Arrays.asList(sir); 22227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk } 22327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk }; 22427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk} 225