我使用推送通知来显示通知。它通过备用入口点工作正常。后台应用程序将侦听通知。当我点击通知时,我想在我的UI应用程序上打开一个特定页面。怎么做?我尝试使用以下代码,但它总是从起始页面加载Ui。如果应用程序已在运行,如何加载特定页面。否则从开始页面加载UI。另外,我想将一些值从后台应用程序传递给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();
}
答案 0 :(得分:1)
您已经将数据从后台传输到主UI应用程序(字符串"MYAPP"
)。
您的应用程序(listed in your previous question)启动,并检查传递给它的参数,然后确定是在后台运行,还是作为普通的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());
}
}