检查密码是否存在并在锁定屏幕上启用 - Android

时间:2011-09-20 16:45:18

标签: android

有没有办法检查你的设备是否以编程方式启用了android锁屏密码? 我开始使用DeviceAdminReceiver和DevicePolicyManager类检查这个,但这些类不引用以下状态: 1.我有一个锁屏密码 - >我删除了密码,现在密码被禁用了。

感谢您的帮助, 尼尔

2 个答案:

答案 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;
        }

    }