0

プログラムで別のアプリケーションから Blackberry アプリケーションを終了する方法。

たとえば、Blackberry では、最初のアプリケーションから 2 番目のアプリケーションを終了するか、アプリケーションから別のアプリケーションに終了する必要があるよりも 2 つのアプリケーションをインストールします。

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);

2 番目のコード スニペットでは、int コードと long コードを正しいコードに置き換える必要があります。呼び出し元のアプリは正しい値を渡す必要があります。コードをライブラリに配置して、両方のアプリがそこから値を使用できるようにすることもできます。システム内の他のアプリと競合しないように、PID がシステム全体で一意であることを確認してください。アプリの完全修飾パッケージ名を使用し、Eclipse プラグインで右クリック -> 「文字列をロングに変換」を使用することをお勧めします。

更新:
ハックな方法: EventInjection を使用して、特定のアプリを閉じることができるキー コンボをアプリから注入することができます。たとえば、カメラ アプリは ESC キーを押すと自動的に閉じます。したがって、次の行で閉じることができます。

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

このアプローチは非常に信頼できません。うまくいかない場合もあり、注入されThread.sleepた各イベントの後に短い呼び出しを追加して、注入を微調整する必要がある場合があります。または、Ui スレッドからインジェクション コードを呼び出す必要がある場合もあります。

キー インジェクションのアクセス許可をアプリに割り当てることを忘れないでください。

于 2012-06-11T12:18:15.860 に答える