2012-03-11 18 views
1

私は私のロック画面を越えるアクティビティを持っています。しかし、私がそれを終了すると、私のロック画面が壊れます。さて、文字通り...しかし、私は正常に私の電話をロックすることはできません。私はそれを再起動する必要があります。私は自分のonDestroyに何かを入れるのを忘れているような気がする。私はそのロックスクリーンを終えた後にレピートする必要がある。 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(); 
     } 

しかし、後ろボタンを通して解き放たれます....

編集:

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

今後これを必要とする人のためだけです。

関連する問題