专注于Blackberry

存档: April, 2008

BlackBerry 应用程序开发者指南 第二卷:高级–第12章 管理应用程序

12
            第12章 管理应用程序

应用程序管理器
管理代码模块

应用程序管理器
BlackBerry设备VM有一个应用程序管理器,它的功能和对于其他Java程序的操作系统事件调动中心一样.
net.rim.device.api.system.ApplicationManager类使应用程序可以和应用程序管理器交互,并完成下面的操作:

与进程交互,例如获取前台应用程序的ID.
发送一个全局事件给系统.
 锁住或解锁BlackBerry设备,或判断BlackBerry设备是否锁住.
 立即运行一个程序,或者在一个特定的时间运行应用程序.

为了使用ApplicationManager类的任何方法,你必须获取一个当前应用程序管理器的引用.调用getApplicationManager()获得当前应用程序管理器.
ApplicationManager manager = ApplicationManager.getApplicationManager();
获取应用程序的相关信息
调用静态方法ApplicationManager.getVisibleApplications()获取当前运行的进程信息.例如,你可以编写一个系统管理应用程序来记录BlackBerry设备的状态,以决定用户使用每个应用程序所花费的时间.
对于正在运行的可见应用程序,为获取一组ApplicationDescriptor对象,调用getVisibleApplications().一个ApplicationDescriptor对象包含了应用程序的描述性信息,例如它的名称,图标,主(Home)屏幕的位置,以及资源包(bundle).使用ApplicationDescriptor方法获取这个信息.例如,为获取一个运行应用程序的名称,调用一个应用程序描述(descriptor)上的getName()方法.

ApplicationManager manager = ApplicationManager.getApplicationManager();
ApplicationDescriptor descriptors[] = manager.getVisibleApplications();
// Retrieve the name of a running application.
String appname1 = descriptors[0].getName()

      
为当前应用程序获取一个ApplicationDescriptor,调用

ApplicationDescriptor.currentApplicationDescriptor().
ApplicationDescriptor descriptor =
ApplicationDescriptor.currentApplicationDescriptor();
String appname = descriptor.getName();

发布一个全局事件
使用ApplicationManager.postGlobalEvent()作为基本机制和其他进程进行通讯.
  注:你也可以使用运行时存储发送和接收进程间的消息.为获得更多信息,参看135页的”在应用程序之间共享运行时对象”.
为了发布一个全局事件到指定的应用程序中,调用postGlobalEvent(int, long, int, int, Object, Object).
processID参数指定了进程的ID发送事件.为获取一个进程ID,调用getProcessId(ApplicationDescriptor). guid参数为事件指定一个GUID值.数据和对象为事件指定附加的信息.
为了对所有应用程序发送一个全局事件,使用下面形式之一的postGlobalEvent()方法:

方法

描述

boolean postGlobalEvent(long)

发布一个带有唯一标志符的全局事件.

boolean postGlobalEvent(long, int, int)

发布一个带有附加数据的全局事件.

abstract boolean postGlobalEvent(long, int, int, Object, Object)

发送一个带有附加整数和对象数据的全局事件.

接收一个全局事件
net.rim.device.api.system.GlobalEventListener接口的实现接收全局事件. GlobalEventListener.eventOccurred()的实现定义了当一个全局事件发生时所发生的事情.
调用Application.addGlobalEventListener(GlobalEventListener)注册你的实现.
锁住一个BlackBerry设备
>调用 ApplicationManager.lockSystem(true).
决定一个BlackBerry设备是否锁住
>调用ApplicationManager.isSystemLocked().
解锁一个BlackBerry设备
>调用ApplicationManager.unlockSystem(true).
用不同的参数运行一个应用程序
创建一个新的应用程序描述
.使用已经存在的ApplicationDescriptor作为一个模板.在main()里指定使用的参数.

ApplicationDescriptor template = ApplicationDescriptor.currentApplicationDescriptor();
String[] args [...]

继续阅读本文 →

  

Confach发表于 April 29, 2008 6:17 am | 留言 |文档 

BlackBerry 应用程序开发者指南 第二卷:高级–第13章 应用程序间共享运行时对象

13
         第13章 应用程序间共享运行时对象

共享运行时对象

共享运行时对象
注: 当应用程序第一次访问运行时存储时,检查一个 NoClassDefFoundError.如果系统管理员通过应用程序控制限制访问运行时存储,将抛出此错误. 为获得更多信息,参看BlackBerry应用程序开发者指南 第2卷:高级 第1卷:基础.
BlackBerry设备使用一个运行时存储提供一个中心位置,在此位置上应用程序可以共享运行时对象.缺省的,仅由RIM数字签名的应用程序才可以访问运行时存储上的数据.联系RIM获得关于如何控制访问你的数据的信息.
获取运行时存储
>调用RuntimeStore.getRuntimeStore().

RuntimeStore store = RuntimeStore.getRuntimeStore();

为增加或获得运行时对象,调用RuntimeStore上的方法.
注:运行时存储不是持久的,如果BlackBerry重启,运行时存储的数据将丢失.
增加一个运行时对象
>调用RuntimeStore.put(long, String). 将一个唯一long ID和存储的对象作为参数.

RuntimeStore store = RuntimeStore.getRuntimeStore();
// Create an object and a unique number to identify the object.
String msg = "Some shared text";
long ID = 0×60ac754bc0867248L;
// put() throws an IllegalArgumentException if an object with the same ID exists.
try {
    store.put( ID, msg );
    }
catch(IllegalArgumentException e) [...]

继续阅读本文 →

  

Confach发表于 April 29, 2008 6:15 am | 留言 |文档 

BlackBerry 应用程序开发者指南 第二卷:高级–第11章 管理通知(Notification)

11
           第11章 管理通知(Notification)

通知API
增加事件
响应事件
自定义系统的通知

通知API
通知API(net.rim.device.api.notification)让你可以为你的应用程序增加自定义事件,并且当自定义事件发生时,又允许你定义用户接收的通知类型.
注:当你的应用程序第一次访问通知API时,它将检查一个ControlledAccessException.如果系统管理员使用应用程序控制限制访问通知API,一将抛出个运行时异常.为获取更多信息,参看”BlackBerry应用程序开发者指南 第2卷:高级 第一卷:基础”.

通知事件类型

描述

短暂事件

系统通知,例如LED闪烁,振动或铃声.

延续事件

应用程序指定的通知,例如一个UI.

 
对于短暂事件,只要事件一发生,BlackBerry设备就会使用一个系统通知, 例如LED闪烁,振动或铃声,尽快将消息发送给用户.应用程序不可以请求一指定类型的通知.在手持设备配置(Profile)列表里,用户通过选择一个活动的配置和设置配置选项来控制它们如何接收短暂事件的通知.为了将一个自定义的系统通知加入到短暂事件,请实现Consequence接口.

在延续的事件里,BlackBerry设备根据事件的优先级将它们安排在一个队列里.当事件发生时,事件影响的应用程序可能为用户提供一个自定义的通知,一般是通过显示一个用户界面(UI)元素,例如一个对话框来完成.为了监听延续的事件,实现NotificationsEngineListener接口.BlackBerry设备不会为延续事件提供一个系统级的通知.
增加事件
注册一个新的事件源
创建一个唯一long ID
为每个通知事件定义一个long ID.

public static final long ID_1 = 0xdc5bf2f81374095L;

注:使用BlackBerry IDE将一个String转化为一个long,为你的应用程序创建一个long的标记符:
1.在BlackBerry IDE文本里,输入一个字符串.          2.选择字符串,右击,然后单击Convert “string” to Long.
 
定义一个源对象
定义一个为事件提供源的对象. toString()的实现返回显示在配置列表里的字符串.

Object event = new Object() {
    public String toString() {
       return "Notification Demo";
       }
}

 
将你的应用程序注册一个通知源
为了将你的应用程序作为一个事件源加入到手持设备的配置列表里,调用NotificationsManager.registerSource().在此方法里,指定一个唯一的事件ID,源对象以及通知级别.
通知级别设置了事件的优先级,它决定了延续事件发生的顺序.以最高级到最低级的顺序,级别如下:

NotificationsConstants.CRITICAL
NotificationsConstants.SENSITIVE
NotificationsConstants.IMPORTANT
NotificationsConstants.DEFAULT_LEVEL
 NotificationsConstants.CASUAL

 注:优先级仅适用于延续事件.只要短暂事件触发,它们就会发生.当触发一个延续事件时,指定一个过期时间.如果事件在最高级事件之前已经过期,用户可能不会接收到此最低级事件的通知.
当BlackBerry设备启动时注册事件源
为了注册一个事件源,创建一个带有libMain()的工程,在BlackBerry设备启动时进行注册.
 
创建一个类库工程
1.在BlackBerry IDE, 创建一个工程.
2.右击工程,单击Properties.
3.单击 Application标签.
4.在Project type 下拉列里,单击Library.
5.选择Auto-run on startup.
6.单击OK.
7.定义libMain().

public static final [...]

继续阅读本文 →

  

Confach发表于 April 29, 2008 6:04 am | 留言 |文档 

上一页 Next Page »