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
This commit is contained in:
@@ -24,11 +24,9 @@ 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;
|
||||
@@ -269,7 +267,6 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
|| requestCode == ENABLE_ENCRYPTION_REQUEST) {
|
||||
if (resultCode != RESULT_CANCELED) {
|
||||
getActivity().setResult(resultCode, data);
|
||||
disableScreenLockSuggestion();
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
@@ -548,30 +545,9 @@ 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();
|
||||
|
@@ -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 class Settings extends SettingsActivity {
|
||||
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 */ }
|
||||
|
@@ -18,6 +18,7 @@ import android.app.AutomaticZenRule;
|
||||
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.IBinder;
|
||||
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 @@ public class SuggestionsChecks {
|
||||
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;
|
||||
|
Reference in New Issue
Block a user