2016-08-30 3 views
2

일부 IMM 코드를 입력하는 앱이 있으며 시스템 팝업의 대화 상자에 코드를 입력하면 무슨 일이 일어 났는지 알려줍니다 (중요). 프로그래밍 방식으로 시스템 대화 상자를 닫을 수 있습니까?프로그래밍 방식으로 시스템 대화 상자 닫기

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    Log.e("Focus debug", "Focus changed !"); 

    if (!hasFocus) { 
     Log.e("Focus debug", "Lost focus !"); 
     Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
     sendBroadcast(closeDialog); 
    } 
} 

그리고이 코드 : (작동하지)

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); 

그리고이 코드 (유사) :(작동하지)

Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
    sendBroadcast(closeDialog); 
다음 enter image description here

내 코드입니다

이 시스템 대화 상자가 모두 팝업 된 후 사용자가 수동으로 닫을 때까지 대기하십시오

내가 할 수있는 일은 작업이고 시스템 대화 상자를 닫을 수 있습니까?

+0

:

이 대화 상자는 사용자 코드에서 나타나는 경우

는 이런 일을하려고합니다. . 이것은 사용자 조치가 일시적인 시스템 대화 상자를 닫아야하는 경우 브로드 캐스트됩니다. 임시 시스템 대화 상자의 예로는 알림 창 - 음영 및 최근 작업 대화 상자가 있습니다. –

+0

그래서? ,이 대화 상자를 닫을 수 없다고 말해 줍니까? 아니면 강제로 닫을 수있는 방법이 있습니까? "Ok"를 눌러도 괜찮을 것입니다. – sharon2469

+0

그런 API에 대해 좋은 인수 (사용자 상호 작용없이 중요한 시스템을 수행하지 마십시오)가 있기 때문에 가능하지 않다고 생각합니다. – Christopher

답변

-1

전역 Dialog 인스턴스로 대화 상자 인스턴스를 보유 할 수 있다면 원하는대로 수동으로 해제 할 수 있습니다. 위의 작업은 모든 시스템 대화 상자를 닫습니다하지 않습니다

private Dialog mDialog; 

public void whereDialogPopsup() 
{ 
    AlertDialog.Buildder builder = new AlertDialog.Builder(); 
    ... 
    mDialog = builder.show(); 
} 

public void closeDialog() 
{ 
    if(mDialog != null) 
    { 
     mDialog.dismiss(); 
     // remove it if you don't need any more 
     mDialog = null; 
    } 
} 
+0

질문은 시스템 대화 상자를 닫는 것에 관한 것입니다. –

+0

예 어떻게해야합니까? – sharon2469