2

토글 버튼을 사용하여 내 안드로이드 휴대 전화의 KeyGaurd을 토글하려면 아래 코드를 작성했습니다. 그러나 나는 이상한 행동에 직면하고있다.한 번 사용 중지 한 KeyGaurd를 다시 사용할 수 없습니다.

  • keygaurd을 사용할 수 없게 설정합니다. 다시 사용할 수 없습니다.

    btnToggleLock.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
    
         if (btnToggleLock.isChecked()) { 
    
          toast.cancel(); 
          toast.setText("Unlocked"); 
          toast.show(); 
    
          Log.i("Unlocked", "If"); 
    
          KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
    
          KeyguardLock myLock = myKeyGuard 
            .newKeyguardLock(KEYGUARD_SERVICE); 
          myLock.disableKeyguard(); 
    
    
         } else { 
    
          toast.cancel(); 
          toast.setText("Locked"); 
          toast.show(); 
    
          KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
          KeyguardLock myLock = myKeyGuard 
            .newKeyguardLock(KEYGUARD_SERVICE); 
          myLock.reenableKeyguard(); 
    
          Log.i("Locked", "else"); 
    
         } 
    
        } 
    }); 
    
  • keygaurd을 사용할 수 없게 설정합니다. 다시 사용할 수 없습니다.

  • 나는 컨트롤이 모두 if 및뿐만 아니라

else도 내가 안드로이드 2.2.1 motoralla milestone을 사용하고를 통과한다 그것을 테스트.

답변

1

여기서 문제는 "if"문이 실행될 때마다 새 Lock (KeyGuardLock)을 생성한다는 것입니다. 처음 생성 할 때 잠금을 비활성화 할 수는 있지만 비활성화 한 잠금을 "다시 활성화"해야합니다. 새 잠금을 만들 수는 없습니다.

해결책은 onClickListener 외부에서 잠금을 만드는 것입니다. ie "if"문에서 다음 코드를 가져 와서 onClickListener를 설정하기 전에 선언하십시오. -

KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
      KeyguardLock myLock = myKeyGuard 
        .newKeyguardLock(KEYGUARD_SERVICE);