http://supportforums.blackberry.com/t5/Java-Development/Unable-to-close-camera-using-EventInjector-for-touch-screen/m-p/785247#M143879
So I believe I have found a way to make this work consistently. My issue was not the permissions, as all along I was testing with the proper permissions set (or by prompting hte user to set them). The solution I found is to put a Thread.sleep(500) between the two injected ESCAPE events as follows:
EventInjector.KeyEvent inject = new EventInjector.KeyEvent(EventInjector.KeyEvent.KEY_DOWN, Characters.ESCAPE, 0);
inject.post();
sleep(500);
inject.post();
I'm not exactly sure why this works, and I'm not saying that it's the right way to solve the problem, but it works for me. I tried shorter sleep times but 500ms was the shortest that I could get to consistently work. Also, this didn't work when I used the EventInjector.invokeEvent() method, only with the post() method. Hope this helps some people out.