【问题标题】:Open blackberry device options programmatically以编程方式打开黑莓设备选项
【发布时间】:2019-01-22 16:41:03
【问题描述】:

应用详情:

我正在编写一个要求用户设置设备密码的应用程序。该公司将黑莓设备分发给其员工,然后他们将使用这些设备报告销售等情况。该公司希望确保设置了设备密码,以便任何人在窃取手机时都无法轻易访问机密信息。如果没有设置密码,应用程序一定不能运行,这很容易。

问题:

公司希望显示“请设置设备密码”的消息,然后将用户引导至设备的选项菜单,以显示在何处设置设备密码。这样做似乎很麻烦

到目前为止我所做的尝试:

我研究了ApplicationManager 对象,它允许您将应用程序带到前台。但是,当我使用以下代码查看可用的应用程序时:

ApplicationManager manager = ApplicationManager.getApplicationManager();
ApplicationDescriptor descriptors[] = manager.getVisibleApplications();
for(int i=0;i<descriptors.length;i++)
{
    String applicationName= descriptors[i].getName();
    System.out.println("applicationName");
}

唯一可见的应用程序是电话、消息、黑莓消息、主屏幕等,但选项应用程序不存在,这让我相信它无法从这里访问。 (如果我错了,请告诉我)

我还查看了Invoke.invokeApplication(appType, args) 方法,但是 API 没有用于选项或设置等的 appType 常量。API 仅指定以下类型,我找不到我需要的类型:

  • APP_TYPE_ADDRESSBOOK

  • APP_TYPE_BLUETOOTH_CONFIG

  • APP_TYPE_CALCULATOR

  • APP_TYPE_CALENDAR

  • APP_TYPE_CAMERA

  • APP_TYPE_MAPS

  • APP_TYPE_MEMOPAD

  • APP_TYPE_MESSAGES

  • APP_TYPE_PHONE

  • APP_TYPE_SEARCH

  • APP_TYPE_TASKS

我已扫描 API 文档,但找不到任何看起来正确的内容。我已经搜索了设备和选项和设置,但没有一个匹配项是相关的。

如果有人知道该怎么做,请告诉我。

【问题讨论】:

    标签: java blackberry blackberry-os5 blackberry-os6


    【解决方案1】:

    很遗憾,没有标准的 API 可以以编程方式调用此屏幕。但是有一个解决方法。使用EventInjector 注入一系列键盘事件以打开选项屏幕。

    这种方式并不优雅,但我认为这是这种情况下唯一的解决方法。

    更新:

    我将实施以下方法。在应用程序启动时,我会检查设备是否通过DeviceInfo.isPasswordEnabled() 受到密码保护。

    如果设备不受密码保护,我会显示消息:设备不受密码保护。请在设备选项中为您的设备设置密码。并再次启动应用程序。

    我明白,这种方式并不优雅,但它是可靠的,并为客户提供了完整的信息,如何正确使用这个应用程序。

    【讨论】:

    • 是的,我想 maaaybe 可以工作。有点。问题是我必须为每个操作系统版本做不同的事情,因为我相信菜单已经改变。此外,我不确定这将如何工作,因为我不知道如何在该人可能拥有的随机数量的应用程序中导航。
    • @JasonRidge 不幸的是,没有可靠的方法可以做到这一点。我已经更新了我的答案,请检查更新。
    【解决方案2】:

    好的,事实证明您可以使用 ApplicationManager 运行内部应用程序,所以我使用以下代码启动了 Options 应用程序:

      ApplicationManager.getApplicationManager().launch("net_rim_bb_options_app");
    

    但是,这只会启动选项应用程序,不会将用户导航到安全部分。

    以下简介 from this page 帮助我了解了这种方法的真正作用:

    开始

    可以通过多种方式启动 BlackBerry 应用程序:

    • 系统在设备启动时自动
    • 由另一个应用程序
    • 由系统在预定时间进行

    无论应用程序如何启动,应用程序管理器都负责启动应用程序将在其中运行的进程。

    ApplicationManager 类使应用程序能够与应用程序管理器交互以执行任务,包括:

    • 立即或在预定时间运行应用程序
    • 与进程交互,包括检索前台应用程序的 ID
    • 将全局事件发布到系统

    入口点

    应用程序管理器通过获取一个新进程并在该进程中生成一个线程来调用应用程序的入口点之一来启动应用程序。对于许多应用程序,其应用程序类的 main() 方法是被调用的单个入口点。但是您可以为一个应用程序配置多个入口点。

    使用多个入口点可以让您为用户创建不同的方式来启动应用程序。例如,如果您的应用程序允许用户创建新文档,您可能希望为用户提供两个图标,他们可以单击它们来启动应用程序。用户可以单击一个图标将应用程序打开到其主屏幕,然后单击另一个图标将应用程序打开到创建新文档所需的屏幕。


    总结

    所以基本上这个方法只是运行应用程序的 main 方法,并在 main 方法中提供参数。我怀疑 Options 应用程序的 main 方法不允许您提供要打开的页面作为 main 方法中的参数。

    没有关于选项应用程序采用哪些参数的文档(据我所知),所以没有猜测如何使用它,似乎将用户引导到这里并给他们一些关于如何进一步导航的说明是我唯一的选择

    u_u

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      相关资源
      最近更新 更多