1

プッシュ通知を使用して通知を表示しています。代替エントリポイントによって正常に機能します。バックグラウンドアプリケーションは通知をリッスンします。通知をクリックすると、UIアプリケーションで特定のページを開きたいです。それはどのように行われますか?次のコードを使用してみましたが、常に開始ページからUiが読み込まれます。アプリがすでに実行されている場合、特定のページを読み込むにはどうすればよいですか。それ以外の場合は、最初のページからUIをロードします。また、BackgroundアプリからUIアプリケーションにいくつかの値を渡したいと思います。

try {
     ApplicationDescriptor[] appDescriptors = 
         CodeModuleManager.getApplicationDescriptors(CodeModuleManager.getModuleHandle("MYAPP"));
     ApplicationDescriptor appDescriptor = 
         new ApplicationDescriptor(appDescriptors[0], new String[] {"MYAPP"});
     ApplicationManager.getApplicationManager().runApplication(appDescriptor);
} catch (ApplicationManagerException e) {
        e.printStackTrace();
}
4

1 に答える 1

1

すでにバックグラウンドからメインUIアプリケーション(文字列)にデータを転送しています"MYAPP"

アプリケーション(前の質問にリストされているもの)が起動し、渡された引数を確認してから、バックグラウンドで実行するか、通常のUIアプリケーションとして実行するかを決定します。

引数を追加するだけです。上記のコードで、次のように変更します。

ApplicationDescriptor appDescriptor = 
     new ApplicationDescriptor(appDescriptors[0], 
                               new String[] { "MYAPP", "4", "FirstScreen" });

次に、UiApplicationサブクラス(App.javaなど)で、次のように変更できます。

public static void main(String[] args)
{
    Application theApp = null;

    switch (args.length) {
    case 2:
        // initial screen and number of notifications provided
        theApp = new App(args[2]);
        app.setNumberOfNotificationsReceived(Integer.parseInt(args[1]);
        break;
    case 1: 
        // just the number of notifications was provided, not an initial screen name
        theApp = new App();
        app.setNumberOfNotificationsReceived(Integer.parseInt(args[1]);
        break;
    case 0:
    default:
        // no arguments .. launch the background application
        BackgroundApplication app = new BackgroundApplication();
        app.setupBackgroundApplication();
        theApp = app;
        break;
    }

    theApp.enterEventDispatcher();
}

...クラスにsetNumberOfNotificationsReceived()メソッドとApp(String)コンストラクターを追加しました。Appこれらは単なる例です。好きなように作ってください。

App.java:

public App()
{        
    // Push a screen onto the UI stack for rendering.
    pushScreen(new DefaultScreen());
} 

public App(String screenName) {
    if (screenName.equalsIgnoreCase("FirstScreen")) {
        pushScreen(new FirstScreen());
    } else {
        pushScreen(new DefaultScreen());
    }
}
于 2012-07-20T22:15:12.113 に答える