From 7ad4a17c5c6f2c068f0395bd7cd904524c3d29ae Mon Sep 17 00:00:00 2001 From: Udam Saini Date: Mon, 25 Jan 2016 11:22:33 -0800 Subject: [PATCH] Adds screen lock as a suggested activity Also, fixes a bug where the suggested activity stayed on screen after the component was disabled causing a crash. bug:25246207 bug:26770556 Change-Id: I28d784cdc57e464e49887483690ab514ca3bc46a --- AndroidManifest.xml | 28 +++++++++++++++++++ res/values/strings.xml | 7 +++++ .../android/settings/ChooseLockGeneric.java | 24 ++++++++++++++++ .../settings/dashboard/DashboardSummary.java | 3 ++ 4 files changed, 62 insertions(+) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c1585113ac6..ea1bc89b40e 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1562,6 +1562,34 @@ android:value="true" /> + + + + + + + + + + + + + + + + + + + + + + Screen lock + + + Protect your device + Choose screen lock diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 6461b937003..0799829d120 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -24,9 +24,11 @@ import android.app.DialogFragment; import android.app.Fragment; import android.app.FragmentManager; import android.app.admin.DevicePolicyManager; +import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager.RemovalCallback; @@ -267,6 +269,7 @@ public class ChooseLockGeneric extends SettingsActivity { || requestCode == ENABLE_ENCRYPTION_REQUEST) { if (resultCode != RESULT_CANCELED) { getActivity().setResult(resultCode, data); + disableScreenLockSuggestion(); finish(); } } else { @@ -545,9 +548,30 @@ public class ChooseLockGeneric extends SettingsActivity { getActivity().setResult(Activity.RESULT_OK); } else { removeAllFingerprintTemplatesAndFinish(); + disableScreenLockSuggestion(); } } + private void disableScreenLockSuggestion() { + final ComponentName suggestionChooseLock = new ComponentName("com.android.settings", + "com.android.settings.suggestion.ChooseLockGeneric"); + disableComponent(suggestionChooseLock); + PackageManager pm = getContext().getPackageManager(); + if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { + final ComponentName suggestionFingerprint = new ComponentName( + "com.android.settings", + "com.android.settings.suggestion.FingerprintEnrollIntroduction"); + disableComponent(suggestionFingerprint); + } + } + + private void disableComponent(ComponentName componentName) { + getContext().getPackageManager().setComponentEnabledSetting( + componentName, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + } + private Intent getIntentForUnlockMethod(int quality, boolean disabled) { Intent intent = null; final Context context = getActivity(); diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 8dffffa934a..b22431e791e 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -161,6 +161,9 @@ public class DashboardSummary extends InstrumentedFragment List categories = ((SettingsActivity) getActivity()).getDashboardCategories(); mAdapter.setCategories(categories); + + // recheck to see if any suggestions have been changed. + mAdapter.setSuggestions(mSuggestionParser); mDashboard.setAdapter(mAdapter); long delta = System.currentTimeMillis() - start;