blackberry - 如何通过代码启动黑莓应用程序?

标签 blackberry java-me push-notification blackberry-jde

我有一个监听推送消息的后台函数。我需要处理推。我创建了在推送到达时采取任何操作的功能,并且效果很好。例如,当推送到达时,我会增加一个数字等等。

但是,当用户按下“确定”按钮进行推送时,实际启动应用程序的代码是什么?

我只需要让应用程序正常启动,就像用户刚刚按下应用程序的图标一样。

I am using OS < 7.X

最佳答案

一种典型的模式是构建具有两个入口点 的应用程序。也就是说,它可以以两种不同的方式启动。一种方法是使用普通的 UiApplication。这是标准的 BlackBerry 应用程序,可以通过按主屏幕图标启动。

另一种方法是定义一个处理推送通知的后台服务,并在设备启动时由操作系统启动。

您将通过在应用程序的 BlackBerry_App_Descriptor.xml 文件中添加一个备用入口点 来定义后台/推送入口点。确保选中启动时自动运行不显示应用程序图标...。除了 UiApplication 的正常入口点之外,您的应用程序描述符 xml 文件还应包含如下内容:

  <AlternateEntryPoints>
    <AlternateEntryPoint Title="PushService" MainMIDletName="" 
                         ArgumentsForMain="-push" HomeScreenPosition="0"
                         StartupTier="7" IsSystemModule="true" 
                         IsAutostartup="true" hasTitleResource="false" 
                         TitleResourceBundleKey="" TitleResourceBundleName="" 
                         TitleResourceBundleClassName="" TitleResourceBundleRelativePath="">
      <Icons/>
      <KeywordResources KeywordResourceBundleName="" KeywordResourceBundleRelativePath="" KeywordResourceBundleClassName="" KeywordResourceBundleKey=""/>
    </AlternateEntryPoint>
  </AlternateEntryPoints>

然后,你将有一个像这样的主程序:

public class MyApp extends UiApplication

    public static void main(String[] args) {
       if (args.length > 0 && args[0].equals("-push")) {
          // this is the push service
          PushAgent pa = new PushAgent();
          pa.enterEventDispatcher();
       } else {
          // UiApplication
          MyApp app = new MyApp();
          app.enterEventDispatcher();
       }
    }
}

其中 PushAgent 是一个扩展 Application 的类,而不是 UiApplication

然后,当您的推送代理收到通知并且您决定要显示 UI 时,使用如下内容:

ApplicationDescriptor ad = ApplicationDescriptor.currentApplicationDescriptor();
// String[] used for command line args, but we don't pass any to the UI app
ApplicationDescriptor ui = new ApplicationDescriptor(ad, new String[] { });
ApplicationManager.getApplicationManager().runApplication(ui);

关于blackberry - 如何通过代码启动黑莓应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041626/

相关文章:

android - 当应用程序未运行(iphone/android)时,在远程触发器上创建(重复高音)警报,就像查找我的 iPhone 一样

ios - 应该使用哪个 npm 模块在 Node js 中向 Apple(iphone) 发送推送通知,为什么以及如何实现这一点?

azure - Xamarin.iOS - 设备关闭时推送通知

android - Blackberry - 使用 GPS 和 Google map 估计 Android 应用程序的端口

apache-flex - 移动和桌面 AIR 之间的差异

javascript - 键盘在 Android 和 BlackBerry 中未显示在元素焦点上

java - 消息和彩信记录

通过 J2ME 或 BlackBerry API 进行序列化

exception - 在j2me中播放音频失败

encryption - J2ME中的加密和解密文件