Dynamically checks if screen lock suggestion is needed
Fixes a bug where if you upgrade a device with screen lock,
screen lock suggestion would show (upgrade such as N->N developer
builds) or from a user test case like M->N
bug:26844580
Change-Id: Ic779ff28f5895e407c2c96771dbbc622e6026a7f
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3764b95..5cdd5fd 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1607,33 +1607,35 @@
android:value="true" />
</activity>
- <activity-alias android:name=".suggestion.ChooseLockGeneric"
- android:icon="@drawable/ic_settings_security"
- android:targetActivity=".ChooseLockGeneric">
+ <activity android:name=".Settings$ScreenLockSuggestionActivity"
+ android:icon="@drawable/ic_settings_security">
<intent-filter android:priority="1">
<action android:name="android.intent.action.MAIN" />
<category android:name="com.android.settings.suggested.category.LOCK_SCREEN" />
</intent-filter>
+ <meta-data android:name="com.android.settings.dismiss"
+ android:value="0,30" />
<meta-data android:name="com.android.settings.title"
android:resource="@string/suggested_lock_settings_title" />
<meta-data android:name="com.android.settings.summary"
android:resource="@string/suggested_lock_settings_summary" />
- </activity-alias>
+ </activity>
- <activity-alias android:name=".suggestion.FingerprintEnrollIntroduction"
- android:icon="@drawable/ic_settings_security"
- android:targetActivity=".fingerprint.FingerprintEnrollIntroduction">
+ <activity android:name=".Settings$FingerprintEnrollSuggestionActivity"
+ android:icon="@drawable/ic_settings_security">
<intent-filter android:priority="2">
<action android:name="android.intent.action.MAIN" />
<category android:name="com.android.settings.suggested.category.LOCK_SCREEN" />
</intent-filter>
+ <meta-data android:name="com.android.settings.dismiss"
+ android:value="0,30" />
<meta-data android:name="com.android.settings.require_feature"
android:value="android.hardware.fingerprint" />
<meta-data android:name="com.android.settings.title"
android:resource="@string/suggested_lock_settings_title" />
<meta-data android:name="com.android.settings.summary"
android:resource="@string/suggested_lock_settings_summary" />
- </activity-alias>
+ </activity>
<activity android:name="ChooseLockGeneric$InternalActivity" android:exported="false"
android:label="@string/lockpassword_choose_lock_generic_header"
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index d2eae7e..b44ee48 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -24,11 +24,9 @@
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;
@@ -269,7 +267,6 @@
|| requestCode == ENABLE_ENCRYPTION_REQUEST) {
if (resultCode != RESULT_CANCELED) {
getActivity().setResult(resultCode, data);
- disableScreenLockSuggestion();
finish();
}
} else {
@@ -548,30 +545,9 @@
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/Settings.java b/src/com/android/settings/Settings.java
index 5d2468e..494fd3b 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -17,6 +17,7 @@
package com.android.settings;
import com.android.settings.applications.AppOpsSummary;
+import com.android.settings.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.fingerprint.FingerprintSettings;
/**
@@ -129,6 +130,10 @@
public static class ZenModeAutomationSuggestionActivity extends SettingsActivity { /* empty */ }
public static class WallpaperSuggestionActivity extends SettingsActivity { /* empty */ }
public static class FingerprintSuggestionActivity extends FingerprintSettings { /* empty */ }
+ public static class FingerprintEnrollSuggestionActivity extends FingerprintEnrollIntroduction {
+ /* empty */
+ }
+ public static class ScreenLockSuggestionActivity extends ChooseLockGeneric { /* empty */ }
// Categories.
public static class WirelessSettings extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java
index fde7bc1..d465942 100644
--- a/src/com/android/settings/dashboard/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/SuggestionsChecks.java
@@ -18,6 +18,7 @@
import android.app.IWallpaperManager;
import android.app.IWallpaperManager.Stub;
import android.app.IWallpaperManagerCallback;
+import android.app.KeyguardManager;
import android.app.NotificationManager;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
@@ -26,7 +27,9 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import com.android.ims.ImsManager;
+import com.android.settings.Settings.FingerprintEnrollSuggestionActivity;
import com.android.settings.Settings.FingerprintSuggestionActivity;
+import com.android.settings.Settings.ScreenLockSuggestionActivity;
import com.android.settings.Settings.WallpaperSuggestionActivity;
import com.android.settings.Settings.WifiCallingSuggestionActivity;
import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
@@ -55,10 +58,18 @@
return isWifiCallingUnavailableOrEnabled();
} else if (className.equals(FingerprintSuggestionActivity.class.getName())) {
return isNotSingleFingerprintEnrolled();
+ } else if (className.equals(ScreenLockSuggestionActivity.class.getName())
+ || className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
+ return isDeviceSecured();
}
return false;
}
+ private boolean isDeviceSecured() {
+ KeyguardManager km = mContext.getSystemService(KeyguardManager.class);
+ return km.isKeyguardSecure();
+ }
+
private boolean isNotSingleFingerprintEnrolled() {
FingerprintManager manager = mContext.getSystemService(FingerprintManager.class);
return manager == null || manager.getEnrolledFingerprints().size() != 1;