2012-06-14 2 views
0

브라우저를 닫으려면 블랙 베리의 브라우저에서 eventinjector를 어떻게 사용합니까? 브라우저가로드 될 때 핸드 헬드에서 눌려지는 ESCAPE 키를 시뮬레이션하여 앱이 브라우저를 종료하고 기본 화면으로 돌아가도록 시뮬레이션하려고합니다. 나는이 일을 스스로 시도했지만 성공하지 못했습니다. 어떤 도움이라도 대단히 감사 할 것입니다.브라우저의 EventInjector

답변

2

브라우저를 실제로 제어하려는 경우 BrowserField, BrowserField2을 앱에 사용할 수 있습니다.

키를 누르거나 현재 볼 수있는 앱을 추적하기 위해 수신기를 삽입 할 수도 있습니다. 사용자가 자주 앱을 전환하고 터치 인터페이스가있는 기기가 많이 있으므로 (사용자가 esc 버튼없이 페이지를 닫을 수 있기 때문에) 매우 까다로운 작업입니다.

1

브라우저를 닫으려면,하지만 난 당신이 또한 오이겐 이미 앱 내에서 사용자 찾아 보자하는 BrowserField을 사용할 수있는 방법을 제안 (옳은 일이 있음을 알고 가정합니다 이유는 확실하지 및 이 문제를 피하십시오).

어쨌든, 카메라를 닫는 데 사용하는 일부 코드가 있습니다 (내 앱이 의도적으로 시작 했음). 같은 방법으로 브라우저를 닫을 수도 있습니다. 이 해킹이지만, 시간에, 내가 문제를 해결하는 방식이었다

/** Delay required to keep simulated keypresses from occurring too fast, and being missed */ 
    private static final int KEYPRESS_DELAY_MSEC = 100; 
    /** Max number of attempts to kill camera via key injection */ 
    private static final int MAX_KEY_PRESSES = 10; 
    /** Used to determine when app has been exposed by killing Camera */ 
    private MainScreen _mainScreen; 
    /** Counter for toggling key down/up */ 
    private int _keyEventCount = 0; 

    public void run() { 
     // The picture has been taken, so close the camera app by simulating the ESC key press 
     if (!_mainScreen.isExposed()) { 
     int event = ((_keyEventCount % 2) == 0) ? EventInjector.KeyCodeEvent.KEY_DOWN : 
      EventInjector.KeyCodeEvent.KEY_UP; 
     EventInjector.KeyEvent injection = new EventInjector.KeyEvent(event, Characters.ESCAPE, 0); 
     // http://supportforums.blackberry.com/t5/Java-Development/How-to-use-EventInjector-to-inject-ESC/m-p/74096 
     injection.post(); 
     injection.post(); 

     // Toggle back and forth .. key up .. key down 
     _keyEventCount++; 

     if (_keyEventCount < MAX_KEY_PRESSES) { 
      // Keep scheduling this method to run until _mainScreen.isExposed() 
      UiApplication.getUiApplication().invokeLater(this, KEYPRESS_DELAY_MSEC, false); 
     } else { 
      // Give up and just take foreground ... user will have to kill camera manually 
      UiApplication.getUiApplication().requestForeground(); 
     } 
     } else { 
     // reset flag 
     _keyEventCount = 0; 
     } 
    } 

_mainScreen이 카메라 응용 프로그램을 닫아 발견해야 Screen 내, 그래서 나는 닫혀 있는지 테스트하는 데 사용할 카메라가 성공적으로 종료되었습니다. 또한 내 앱에서 카메라를 시작할 때마다 위의 그림에 나와있는대로

_keyEventCount = 0; 

을 재설정합니다.

업데이트 :

private boolean _isExposed = false; 

protected void onExposed() { 
    super.onExposed(); 
    _isExposed = true; 
} 

protected void onObscured() { 
    super.onObscured(); 
    _isExposed = false; 
} 

public boolean isExposed() { 
    return _isExposed; 
} 
:
또한

이 내 _mainScreen 객체가 노출 여부를 여부를 추적하는 데 필요한 코드는