如何以编程方式从其他应用程序退出黑莓应用程序?

时间:2012-06-11 10:23:18

标签: blackberry

如何以编程方式从其他应用程序退出黑莓应用程序。

e.g。在Blackberry中我安装了两个应用程序,而不是我需要从第一个应用程序退出第二个应用程序或从我的应用程序退出到另一个应用程序。

1 个答案:

答案 0 :(得分:1)

最简洁的方法是在您要关闭的应用程序中实现接口GlobalEventListener。然后,从调用应用程序发送一个包含您自己的自定义代码的全局事件,并让侦听应用程序以受控方式关闭。

示例:

在您要关闭的应用中:

        public class YourCustomApp extends UiApplication implements GlobalEventListener {
            public static final long PID = <unique id for your app here>;
            public static final int CLOSE_APP_CODE = <your code here>;

            public void eventOccurred(long pid, int msgCode, int data1, Object object0, Object object1) {
                if(pid == PID){
                    switch(msgCode){
                        case CLOSE_APP_CODE:
                            controlledClose(); //This method could be, System.exit(0) if no other action is required
                            break;
                    }
                }
            }

        }

在通话应用中:

        ApplicationManager.getApplicationManager().postGlobalEvent(PID, CLOSE_APP_CODE, 0, null, null);

在第二个代码段中,您应该使用正确的代码替换int和long代码。调用应用程序应传递正确的值。您还可以将代码放在库中,让两个应用程序都使用其中的值。确保PID在系统范围内是唯一的,以便它不会与系统中的其他应用程序发生冲突。一个好的做法是使用应用程序的完整限定包名称,然后右键单击 - &gt;在eclipse插件中“将字符串转换为long”。

更新:
hacky方式:您可以尝试使用EventInjection从您的应用中注入可以关闭某个应用的关键组合。例如,按ESC键时,Camera应用程序自动关闭。所以我们可以尝试用这条线关闭它:

EventInjector.invokeEvent( new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN,Characters.ESCAPE, 0));

这种方法非常不可靠。有时,它不起作用,您可能需要通过在每次注入事件后添加短Thread.sleep次调用来微调注入。或者您可能需要从Ui线程调用注入代码。

请记住为您的应用分配密钥注入权限。