在Android设备中,我们可以有三种类型的锁,如模式,密码和密码。
在我的应用程序中,我想以编程方式更改/重置PIN。
我接受来自用户的4位数字,这将被设置为该设备的新PIN。
是否可以重置此PIN或是否违反了Android安全策略?
谢谢。
答案 0 :(得分:2)
您可以使用Device Admin API来完成此操作。 android为您提供了为密码创建自己的逻辑的设施(甚至更多..)。 Read about how to implement password policy.
注意: 您可以在<sdk>/samples/android-<version>/
获取示例代码。 <version>
号码对应于平台的API级别。
答案 1 :(得分:0)
使用reflection.ti反射的最好方法是将设备密码设置为none,滑动,固定,密码。 下面是代码来帮助你。确保你有管理员权限。这段代码会将你的设备密码改为刷卡。对于resetpassword方法中的引脚给出一些值而不是“”空字符串。对于设备策略管理员并没有做任何事情是的,请确保您的应用是系统应用,即系统签名
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();
}