2012-03-11 3 views
1

그래서 내 lockscreen을 통과하는 활동이 있습니다. 그러나 나가 그것을 종료 할 때 나의 lockscreen를 끊는다. 좋아, 문자 그대로 ...하지만 나는 성공적으로 내 휴대폰을 잠글 수 없습니다. 다시 시작해야합니다. 나는 마치 onDestroy에 뭔가를 넣는 것을 잊고있는 것처럼 느껴집니다. 마치 그것이 끝난 후에 lockscreen을 평판해야하는 것처럼. Idk. 문제가 무엇입니까?Android - 내 활동으로 잠금 화면이 깨졌습니다.

잠금 화면 활동 :

@Override 
public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
    setContentView(R.layout.lockscreen); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| 
      WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);//gotta get it to open on lock screen 

    ImageView iv = (ImageView)findViewById(R.id.Background); 
    //iv.getBackground().setAlpha(50); 

    Button close = (Button)findViewById(R.id.Close); 
    close.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 

    KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
    final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("IN"); 
    kl.disableKeyguard(); 

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
    PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK, "My_App"); 
    wl.acquire(); 

    /*Builder adb = new AlertDialog.Builder(this); 
    adb.setMessage("Testing"); 
    adb.setCancelable(false); 
    adb.setNeutralButton("Close",new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      kl.reenableKeyguard(); 
     } 
    }); 
    AlertDialog ad = adb.create(); 
    ad.show();*/ 

    wl.release(); 
} 

보시다시피 난 그냥 작업을 완료합니다. 데스 로이에서 뭔가하는 걸 잊고 있니?

감사

+0

http://developer.android.com/reference/android/app/KeyguardManager.html에 따르면 http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#을 사용해야합니다. FLAG_DISMISS_KEYGUARD를 눌러 잠금을 해제하십시오. 차이점을 알기 위해이 수업에 대한 경험이 없으므로 답이 아닌 의견으로 게시하십시오. – mah

+0

문제는 키보드를 닫으면 키보드가 닫히고 다시는 나타나지 않을 것이기 때문에 지금 일어나는 일은 계속 될 것이라고 생각합니다. – Brandon

답변

0

와우 ...이 아니라 그것의 쉬운 :이 넣어

kl.reenableKeyguard(); 

은이 취소 버튼 :

@Override 
     public void onClick(View v) { 
      kl.reenableKeyguard(); 
      finish(); 
     } 

아직도 방법을 만드는 방법을 알아 내려고 다시 버튼을 통해 uncancelable ....

편집 :

KL의 결승전이 필요하지 않습니다. 그래서 이것은 당신이 그것을하는 방법입니다 :

KeyguardManager.KeyguardLock kl; 

@Override 
public void onDestroy(){ 
    kl.reenableKeyguard(); 
    super.onDestroy(); 
} 

@Override 
public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
    setContentView(R.layout.lockscreen); 
    KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
    kl = km.newKeyguardLock("IN"); 
    kl.disableKeyguard(); 
} 

그냥 미래에 이것을 필요로하는 사람을 위해.