Lock하는 어플을 만드는데 작동이 되다 말다 합니다.
정확히 패턴을 못찾겠는데요.
멤버변수로 선어했구요
KeyguardManager km;
KeyguardManager.KeyguardLock kmlock;
onCreate에서
if(km == null){
km = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);//Context.KEYGUARD_SERVICE
}
if(kmlock == null){
// kmlock = km.newKeyguardLock(KEYGUARD_SERVICE);
kmlock = km.newKeyguardLock("DEV_KEYGARD");
}
버튼두개에
Button.OnClickListener btnClick = new View.OnClickListener() {
public void onClick(View v){
if( v.getId() == R.id.btn_on ){
kmlock.disableKeyguard(); //lock
}else if( v.getId() == R.id.btn_off ){
kmlock.reenableKeyguard(); //unlock
}
getStatus();
}
};
private void getStatus(){
txt.setText("상태 : "+km.inKeyguardRestrictedInputMode());
}
위처럼 정리해서 작성했는데
검색을 해보니깐 kmlock.disableKeyguard() 호출후에 작업이 제대로 안된다는 글이 많던데요.
현재 No Lock이 마켓에서 다운받아져서 깔려있는데
이 어플을 테스트하면 다른 어플이랑 쫑이 나는지 대체 작업이 제대로 되질 않습니다.
kmlock = km.newKeyguardLock(KEYGUARD_SERVICE);
를 호출시에 위 String 인자는 내맘대로 넣어도 되는건지도 궁금합니다. 위처럼 상수를 쓰면 다른Lock어플 작동이 안되더라고요
km.inKeyguardRestrictedInputMode() 역시 화면 잠금 풀기 설정후 재 호출해도 값이 변하지 않더군요.
현재 상황이 총체적 난관에 빠졌습니다. ㅠ,ㅠ
화면 잠금 풀기 만들기가 이렇게 어려울줄이야 ㅠ,ㅠ
뭐가 문제인가요 검색 신나게 하고있는데 차이점을 못찾겠는데 에러가 나니...미칠노릇인데요...
에러 로그는 (라인수는 좀 다르지만)
D/disableKeyguard(23472): disableKeyguard token:android.os.Binder@40513840 tag:keyguard
D/disableKeyguard(23472): print stack dump...
D/disableKeyguard(23472): java.lang.Throwable: stack dump
D/disableKeyguard(23472): at android.app.KeyguardManager$KeyguardLock.disableKeyguard(KeyguardManager.java:75)
D/disableKeyguard(23472): at dev.keyguard.Main$1.onClick(Main.java:53)
D/disableKeyguard(23472): at android.view.View.performClick(View.java:2538)
D/disableKeyguard(23472): at android.view.View$PerformClick.run(View.java:9152)
D/disableKeyguard(23472): at android.os.Handler.handleCallback(Handler.java:587)
D/disableKeyguard(23472): at android.os.Handler.dispatchMessage(Handler.java:92)
D/disableKeyguard(23472): at android.os.Looper.loop(Looper.java:123)
D/disableKeyguard(23472): at android.app.ActivityThread.main(ActivityThread.java:3691)
D/disableKeyguard(23472): at java.lang.reflect.Method.invokeNative(Native Method)
D/disableKeyguard(23472): at java.lang.reflect.Method.invoke(Method.java:507)
D/disableKeyguard(23472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
D/disableKeyguard(23472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
D/disableKeyguard(23472): at dalvik.system.NativeStart.main(Native Method)
D/KeyguardViewMediator( 2999): setKeyguardEnabled(false)
왜그런건지 이해를 못하겠네요.




KeyguardManager km = null; //null 로 초기화 해주세요.
KeyguardManager.KeyguardLock kmlock = null; //마찬가지..
여기서부터..
if(km == null){
km = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);//Context.KEYGUARD_SERVICE
}
if(kmlock == null){
kmlock = km.newKeyguardLock(KEYGUARD_SERVICE);
}
까지를...
Button.OnClickListener btnClick = new View.OnClickListener() {
public void onClick(View v){
///여기다가 삽입해주세요.
if( v.getId() == R.id.btn_on ){
kmlock.disableKeyguard(); //lock
}else if( v.getId() == R.id.btn_off ){
kmlock.reenableKeyguard(); //unlock
}
getStatus();
}
};
그리고 테스트를 다시한번해보세요..