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:
@@ -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"
|
||||
|
@@ -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