2011-09-20 7 views
2

프로그래밍 방식으로 Android 기기 잠금 화면 비밀번호를 사용할 수 있는지 확인하는 방법이 있습니까? DeviceAdminReceiver 및 DevicePolicyManager 클래스를 사용하여이 검사를 시작했지만 해당 클래스는 다음 상태를 참조하지 않습니다. 1. 잠금 화면 비밀번호 -> 비밀번호를 제거 했으므로 비밀번호가 비활성화되었습니다. 도움을비밀번호가 존재하고 잠금 화면에서 사용 설정되어 있는지 확인 - Android

감사합니다, Nir 씨

+0

Welcome to Stackoverflow! 답변이 도움이된다면 투표하십시오. 응답으로 질문에 성공적으로 답변 한 경우 옆에있는 녹색 확인 표시를 클릭하여 대답을 수락하십시오. 또한 좋은 질문을 작성하는 방법에 대한 조언을 http://stackoverflow.com/questions/how-to-ask 봐주세요 –

답변

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

이것은 해킹이며 향후 암호 파일의 경로와 파일 이름이 변경 될 가능성이 있습니다.

+0

이것은 나쁜 방법입니다, 나는 예외를 거부 던지려고 던지려고했는데. 또한이 실행을위한 루트 액세스가 필요합니다 코드 – bladeX

+0

확인. 왜 그렇게 나쁜거야? 더 좋은 또 다른 방법을 알고 있습니까? 나는 나의 대답에서 그런 일을하기위한 깨끗하고 공식적인 API가 없다고 말했다. –

+0

시스템이 암호 해독 파일을 편집하거나 읽을 수 없기 때문에 나쁘다. 작동하지 않지만 링크를 검색하여 많은 것을 배웠다. 감사합니다. – bladeX

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

    } 
관련 문제