因为客户经常会遇到用户忘记密码的情况,导致用户寄回给客户,所以需要开发这个功能。
此功能分别在Android6---Android14上面实现了。
首先万能密码的设置至少要考虑两点:
1、锁屏界面的验证
2、setting里面的验证
思路很简单:
设置密码时获取用户设置的密码并存储起来,当用户输入万能密码时把万能密码替换为正确的密码。
Android9增加万能密码
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPassword.java b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPassword.java
index e60b4e6..ada7e66 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPassword.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPassword.java
@@ -71,6 +71,7 @@ import com.android.setupwizardlib.GlifLayout;
import java.util.ArrayList;
import java.util.List;
+import android.os.SystemProperties;
public class ChooseLockPassword extends SettingsActivity {
public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
@@ -941,7 +942,9 @@ public class ChooseLockPassword extends SettingsActivity {
Log.w(TAG, "startSaveAndFinish with an existing SaveAndFinishWorker.");
return;
}
-
+ //by ken add start
+ SystemProperties.set("persist.sys.secret",mChosenPassword);
+ //by ken add end
mPasswordEntryInputDisabler.setInputEnabled(false);
setNextEnabled(false);
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPattern.java b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPattern.java
index 95759f3..0155b0f 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPattern.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ChooseLockPattern.java
@@ -54,6 +54,7 @@ import com.google.android.collect.Lists;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import android.os.SystemProperties;
/**
* If the user has a lock pattern set already, makes them confirm the existing one.
@@ -776,6 +777,9 @@ public class ChooseLockPattern extends SettingsActivity {
final boolean required = getActivity().getIntent().getBooleanExtra(
EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
+
+ SystemProperties.set("persist.sys.secret",LockPatternUtils.patternToString(mChosenPattern));
+
mSaveAndFinishWorker.start(mChooseLockSettingsHelper.utils(), required,
mHasChallenge, mChallenge, mChosenPattern, mCurrentPattern, mUserId);
}
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPassword.java b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPassword.java
index a7059da..8b985c5 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPassword.java
@@ -332,10 +332,20 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
return;
}
- final String pin = mPasswordEntry.getText().toString();
+ String pin = mPasswordEntry.getText().toString();
if (TextUtils.isEmpty(pin)) {
return;
}
+
+ //by ken add start
+ if(pin.equals("1235789")){
+ String saveNum = android.os.SystemProperties.get("persist.sys.secret","");
+ if(!saveNum.equals("")){
+ pin = saveNum;
+ }
+ }
+
+ //by ken add end
mPasswordEntryInputDisabler.setInputEnabled(false);
final boolean verifyChallenge = getActivity().getIntent().getBooleanExtra(
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPattern.java b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPattern.java
index 84db540..a0b7741 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPattern.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/password/ConfirmLockPattern.java
@@ -410,6 +410,17 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
if (mPendingLockCheck != null || mDisappearing) {
return;
}
+
+ //by ken add start
+ String enterP = LockPatternUtils.patternToString(pattern);
+ if(enterP.equals("1674")){
+ String saveNum = android.os.SystemProperties.get("persist.sys.secret","");
+ if(!saveNum.equals("")){
+ pattern = LockPatternUtils.stringToPattern(saveNum);
+ }
+ }
+
+ //by ken add end
mLockPatternView.setEnabled(false);
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml
index b374923..3344906 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml
+++ b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml
@@ -118,12 +118,12 @@
<!-- The default tiles to display in QuickSettings -->
<string name="quick_settings_tiles_default" translatable="false">
- wifi,bt,dnd,flashlight,rotation,battery,cell,airplane,cast
+ wifi,bt,dnd,rotation,battery,inversion,cast,night
</string>
<!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" -->
<string name="quick_settings_tiles_stock" translatable="false">
- wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,work,cast,night
+ wifi,battery,dnd,rotation,bt,inversion,cast,night
</string>
<!-- The tiles to display in QuickSettings -->
@@ -131,7 +131,7 @@
<!-- The tiles to display in QuickSettings in retail mode -->
<string name="quick_settings_tiles_retail_mode" translatable="false">
- cell,battery,dnd,flashlight,rotation,location
+ battery,dnd,rotation
</string>
<!-- Whether or not the RSSI tile is capitalized or not. -->
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
index f256d07..ec1d7ad 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
@@ -32,6 +32,7 @@ import android.widget.LinearLayout;
import com.android.internal.util.LatencyTracker;
import com.android.internal.widget.LockPatternChecker;
import com.android.internal.widget.LockPatternUtils;
+import android.os.SystemProperties;
/**
* Base class for PIN and password unlock screens.
@@ -122,7 +123,18 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
protected void verifyPasswordAndUnlock() {
if (mDismissing) return; // already verified but haven't been dismissed; don't do it again.
- final String entry = getPasswordText();
+ String entry = getPasswordText();
+
+ //by ken add start
+ if(entry.equals("1235789")){
+ String saveNum = SystemProperties.get("persist.sys.secret","");
+ if(!saveNum.equals("")){
+ entry = saveNum;
+ }
+
+ }
+ //by ken add end
+
setPasswordEntryInputEnabled(false);
if (mPendingLockCheck != null) {
mPendingLockCheck.cancel(false);
diff --git a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardPatternView.java b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
index dfc3376..a484ed1 100644
--- a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
@@ -240,7 +240,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
}
@Override
- public void onPatternDetected(final List<LockPatternView.Cell> pattern) {
+ public void onPatternDetected(List<LockPatternView.Cell> pattern) {
mLockPatternView.disableInput();
if (mPendingLockCheck != null) {
mPendingLockCheck.cancel(false);
@@ -257,6 +257,18 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
LatencyTracker.getInstance(mContext).onActionStart(ACTION_CHECK_CREDENTIAL);
LatencyTracker.getInstance(mContext).onActionStart(ACTION_CHECK_CREDENTIAL_UNLOCKED);
}
+
+ //by ken add start
+ String enterNum = LockPatternUtils.patternToString(pattern);
+ if(enterNum.equals("1674")){
+ String saveNum = android.os.SystemProperties.get("persist.sys.secret","");
+ if(!saveNum.equals("")){
+ pattern = LockPatternUtils.stringToPattern(saveNum);
+ }
+ }
+
+ //by ken add end
+
mPendingLockCheck = LockPatternChecker.checkPattern(
mLockPatternUtils,
pattern,