2012-03-11 2 views
1

Итак, у меня есть активность, которая проходит через мой lockscreen. Но когда я выхожу из него, он ломает мой замок. Ок, не в буквальном смысле ... но я не могу успешно закрыть телефон. Я должен перезапустить его. Я чувствую, что просто забываю положить что-то в свой onDestroy - как будто я должен позаботиться о lockscreen после его завершения. ИДК. В чем проблема?Android - My Activity breaks lockscreen

Lockscreen активность:

@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(); 
} 

Как вы видите, я просто закончить свою деятельность. Я забываю что-то сделать наDestroy?

Благодаря

+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

Wow ... его так же просто, как это:

kl.reenableKeyguard(); 

положить это кнопка, которая отменяет его:

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

Тем не менее, пытаясь выяснить, как сделать он не может быть удален через кнопку обратной связи, хотя ....

EDIT:

Кажется, мне не нужен финал на 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(); 
} 

Только для тех, кому это нужно в будущем.