3

在 android 设备中,我们可以有三种类型的锁,即图案、PIN 和密码。

在我的应用程序中,我想以编程方式更改/重置 PIN。

我接受来自用户的 4 位数字,这将被设置为该设备的新 PIN。

是否可以重置此 PIN 码还是违反 android 安全策略?

谢谢你。

4

2 回答 2

2

您可以使用Device Admin API来完成。android 为您提供了为密码制作自己的逻辑的便利(甚至更多..)。阅读有关如何实施密码策略的信息。

注意: 您可以在<sdk>/samples/android-<version>/. 该<version>数字对应于平台的 API 级别。

于 2012-09-17T06:23:19.440 回答
0

使用反射的最佳方法。使用反射,您可以将设备密码设置为无、滑动、pin、密码。这是帮助您的代码。确保您拥有管理员权限。此代码会将您的设备密码更改为刷卡。对于 resetpassword 方法中的 pin 给出一些值而不是“”空字符串。对于 none 只是不要对设备策略管理器做任何事情和是的,请确保您的应用是系统应用,即系统签名

try
                            {  
                                try{
                                    Class lockPatternUtilsCls = Class.forName("com.android.internal.widget.LockPatternUtils");
                                    Constructor lockPatternUtilsConstructor = 
                                        lockPatternUtilsCls.getConstructor(new Class[]{Context.class});
                                    lockPatternUtilsConstructor.setAccessible(true);
                                    Object lockPatternUtils = lockPatternUtilsConstructor.newInstance(ChangeDeviceLockMode.this);
                                    Method clearLockMethod = lockPatternUtils.getClass().getMethod("clearLock", boolean.class);
                                    clearLockMethod.setAccessible(true);
                                    clearLockMethod.invoke(lockPatternUtils, true);
                                    Method setLockScreenDisabledMethod = lockPatternUtils.getClass().getMethod("setLockScreenDisabled", boolean.class);
                                    setLockScreenDisabledMethod.setAccessible(true);
                                    setLockScreenDisabledMethod.invoke(lockPatternUtils, false);     
                            }catch(Exception e){
                                System.err.println("An InvocationTargetException was caught!");
                                                    Throwable cause = e.getCause();
                            }
                                devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
                                devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, 0);
                                boolean result = devicePolicyManager.resetPassword("", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
                            }
                            catch(Exception ex)
                            {
                                ex.printStackTrace();
                            }
于 2016-05-20T10:35:00.180 回答