有没有办法检查你的设备是否以编程方式启用了android锁屏密码? 我开始使用DeviceAdminReceiver和DevicePolicyManager类检查这个,但这些类不引用以下状态: 1.我有一个锁屏密码 - >我删除了密码,现在密码被禁用了。
感谢您的帮助, 尼尔
答案 0 :(得分:1)
这样做没有干净的方法。没有正式的API。如果你愿意冒黑客,你可以试试这个。我把这些代码拼凑在一起site。
boolean hasPasswordOnLockScreen(){
String sLockPasswordFilename =
android.os.Environment.getDataDirectory().getAbsolutePath() +
"/system/password.key";
try {
// Check if we can read a byte from the file
RandomAccessFile raf = new RandomAccessFile(filename, "r");
raf.readByte();
raf.close();
return true;
} catch (FileNotFoundException fnfe) {
return false;
} catch (IOException ioe) {
return false;
}
}
请注意,这是一个黑客,并且将来可能无法使用密码文件的路径和文件名。
答案 1 :(得分:0)
public class ScreenLock {
private static final String SYSTEM_DIRECTORY = "/system/";
private static final String LOCK_PATTERN_FILE = "gesture.key";
private static final String LOCK_PASSWORD_FILE = "password.key";
public static boolean lockExists() {
String dataSystemDirectory = Environment.getDataDirectory().getAbsolutePath() + SYSTEM_DIRECTORY;
String sLockPatternFilename = dataSystemDirectory + LOCK_PATTERN_FILE;
String sLockPasswordFilename = dataSystemDirectory + LOCK_PASSWORD_FILE;
if (nonEmptyFileExists(sLockPatternFilename) || nonEmptyFileExists(sLockPasswordFilename)) {
return true;
}
return false;
}
private static boolean nonEmptyFileExists(String filename) {
File file = new File(filename);
return file.exists() && file.length() > 0;
}
}