0

如何以编程方式从另一个应用程序退出黑莓应用程序。

例如,在黑莓中,我安装了两个应用程序,而不是我需要从第一个应用程序退出第二个应用程序或从我的应用程序退出到另一个应用程序。

4

1 回答 1

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 在系统范围内是唯一的,这样它就不会与系统中的其他应用程序发生冲突。一个好的做法是使用应用程序的完整包名,然后在 Eclipse 插件中右键单击 ->“将字符串转换为长字符串”。

更新:
hacky 方式:您可以尝试使用 EventInjection 从您的应用程序中注入可以关闭某个应用程序的组合键。例如,相机应用程序在按下 ESC 键时会自行关闭。所以我们可以尝试用这行来关闭它:

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

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

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

于 2012-06-11T12:18:15.860 回答