안드로이드 잠금화면 만드는 중 궁금한 것이 있습니다..
조회수 2638회
foreground서비스를 이용해서 죽지않는 서비스를 많들었구여,
브로드캐스트 리시버를 이용해서 화면이 꺼지면 기본잠금화면을 없애고 제가만든 잠금화면(액티비티)을 생성해주었습니다.
그런데 , 화면을 껏다키면 기본잠금화면이 0.5초~1초정도 보인뒤에 제가 만든 잠금화면이 나타납니다
그리고 제가만든 잠금화면을 해제하면 기본잠금화면이 여전히 잇습니다..
뭔가 기본잠금화면 해제 구현에 문제있는거 같은데 잘 못찾겠습니다..
매니페스트에 < uses-permission android:name="android.permission.DISABLE_KEYGUARD" />도 등록해놧습니다
제가만든 잠금화면(액티비티)에는
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
라고 onCreate에 써놧습니다..
브로드캐스트 리시버는 다음과 같습니다.. 뭐가 문제일까요?..
public class ScreenReceiver extends BroadcastReceiver {
private KeyguardManager km = null;
private KeyguardManager.KeyguardLock keyLock = null;
private TelephonyManager telephonyManager = null;
private boolean isPhoneIdle = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
if (km == null)
km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (keyLock == null)
keyLock = km.newKeyguardLock(Context.KEYGUARD_SERVICE);
if(telephonyManager == null){
telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
if(isPhoneIdle) {
disableKeyguard();
Intent i = new Intent(context, Activity1_1.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
public void reenableKeyguard() {
keyLock.reenableKeyguard();
}
public void disableKeyguard() {
keyLock.disableKeyguard();
}
private PhoneStateListener phoneListener = new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber){
switch(state){
case TelephonyManager.CALL_STATE_IDLE :
isPhoneIdle = true;
break;
case TelephonyManager.CALL_STATE_RINGING :
isPhoneIdle = false;
break;
case TelephonyManager.CALL_STATE_OFFHOOK :
isPhoneIdle = false;
break;
}
}
};
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력