下面参考常规AMS OS服务描述本发明的实施例,该常规AMS OS服务通过维护以下内容管理应用程序:
●已安装程序的注册
●所有在运行应用程序的状态
●操作系统资源
另外,下面描述的该方法是可扩展的;可将其他子系统附加至 该结构。
下面描述的优选实施例示出了如何实现对本地应用程序和使 用Sumbian OSTM操作系统(来自于Symbian Software Ltd.的用于移 动计算装置的先进操作系统)的计算装置上的Java应用程序实现常 规AMS系统。然而,本领域技术人员应该明白,该实施例也可用 于其他操作系统,以及其他类型的计算装置。另外,这里对本方法 管理Java应用程序的披露将使本领域技术人员明白,如何对其他非 本地子系统应用本方法,可以单独应用也可结合应用。本发明的该 实施例中使用Symbian OSTM操作系统和Java仅仅是为了举例说明 的目的,并不是要限定本发明的应用范围。
首先来概述AMS的结构。在此处所给出的优选实例中,AMS 服务提供多层功能,包括从基于应用程序信息存储器的前台、“壳” 应用程序,到后台RDBMS(Relational Database Management System, 关系型
数据库管理系统)。图1示出了AMS各部件的整体结构。
从图1可以看到,本地应用程序和非本地子系统(这里表示为 在Java
虚拟机(Java Virtual Machine,缩写为JVM)中运行的Java 应用程序)具有C++应用程序接口(API),其提供了对AMS内公 用功能的访问通道,例如AmsListenerSupport、Installer server(安 装机服务程序)、Execution server(执行服务程序)。从图2可以看 到,该API由本地应用程序直接访问。然而,非本地子系统中的应 用程序如果不能访问本地操作系统方法的话,则必须具有隔离层 (insulation layer),非本地子系统中的应用程序壳通过隔离层通信。 因此,图1中所示的非本地Java应用程序通过提供Java API和Java 本地接口(Java Native Interface,缩写为JNI)实现AMS功能。同 样地,图1中未示出的其他非本地应用程序环境将会要求提供其自 己的隔离层。
图1中所示C++API用于和系统AMS服务通信。优选的,采 用客户机/服务程序结构,这是因为存在各种可能类型的应用程序, 这些应用程序都必须和单独的AMS服务通信。该结构中主要有两 组类:Installer client/server(安装器客户机/服务程序)类,其处理 单实例安装和卸载事件以及过程(procedure);Execution client/server (执行程序客户机/服务程序)类,其处理涉及应用程序加载、运行 和结束的每个实例的多实例事件和过程。
提供事件通知的Listener(监听程序)类提供Installer和 Execution类。其确切机制可以有变化;例如,召回(callback)或 发布且签订(publish-and-subscribe)都是合适的机制。对于本领域 技术人员而言,其他机制也是显而易见的。
使用
进程间通信(Inter Process Communication,缩写为IPC) 来执行AMS服务与应用程序进程之间的消息交换。AMS服务通过 以下几种方式与影响应用程序进程:
●首先,为AMS应用程序开发提供API。针对授予它们的安 全性许可,应用程序可执行(但不限于)以下任务:安装和卸载应 用程序,监听已安装应用程序,监听在运行应用程序,查询应用程 序信息,运行和关闭应用程序,以及将它们发送至后台或者将其带 到前台。
●其次,AMS与受管理应用程序进程交互。可要求受管理应 用程序关闭或终止响应AMS API调用或前台操作系统层事件。应 用程序还可
请求或者释放操作系统层应用程序拥有的资源,例如推 出连接。
●第三,AMS提供通知事件。针对授予它们的安全性许可, 应用程序可要求AMS事件的通知例如生命周期状态改变,其包括 (但不限于)
○已安装
○已卸载
○已启动
○已挂起
○已恢复
○已停止
除了给程序留下终止执行(退出)的权能之外,AMS还提供 用于触发应用程序生命周期状态改变的唯一方法。因此,AMS是 为用于装置上的可执行程序的安装、卸载和激活的唯一可行方法。
AMS的这种应用程序模式非常灵活,且非常易扩展。该AMS 结构由多层(tier)构成。在最高层,用户通过常见系统例如安装器 (其用于增加或卸载用户应用程序)和桌面(其使用户能够选取和 启动应用程序)与AMS交互。在该最高层之下,AMS提供一组公 用API,其对要求的影响生命周期状态改变的功能提供受控访问, 其包括查询已分配许可或者请求更多的许可。在最底层,AMS模 式与执行必要任务的操作系统
内核交互。AMS还要求对用于数据 长期保存的
非易失性存储器的访问;出于此目的,Symbian OSTM操 作系统实例使用RDBMS后台。从图1可以看到这样一个实例。
该优选形式的应用程序模式限定了一组支持各种应用程序模 式所必须得接口。图2中示出了该AMS结构及有关应用程序接口 的图表。下面的实施例详细列出了图2中所示的公用类。另外,这 些类演示了怎样提供一种用于处理各种应用程序模式的对象模式 的公用接口(例如,J2ME MIDP和本地应用程序)
如前面所述,这种顶层抽象区别了Executable(可执行)和 Installable(可安装)。Application Representation Object(应用程序 表现对象,ARO)类通过扩展现有的AppInfo类,并执行Executable 和Installable方法来构造。如有必要,这些可成对地实现也可单个 地实现。例如,可见图2,MIDletInfo类标题仅执行Executable类 方法,MIDletSuiteInfo类标题仅执行Installable方法,而 NativeAppInfo类标题执行Executable和Installable类方法。
Executable与Installable接口限定了AMS获取特定的 AppExecutor和AppInstaller对象的方法,AppExecutor和AppInstaller 对象用于执行实际的安装或执行。每个Executable和Installable实 例通常具有对应的AppExecutor或AppInstaller实例。
前面也已经描述了Listener类也用于与AMS交互:这些类包 括ExecutorListner和InstallerListener。可用Executor或Installer登 记执行这些接口的类的对象,以获取相应的通知。
图2中的AmsUI示出了AMS交互,例如命令或进程对话被抽 象成高层接口。
值得注意的是,集中到该AMS接口的这两个类是Executor和 Installer。这两个类限定了AMS任务,通过委任相应的实例到已登 记的AppExecutor和AppInstaller类方法来实现它们。
需要对非本地应用程序环境限定合适的方法。图2示出了怎样 借助于JavaInstaller和JavaExecutor类来实现这一点的一个实例。 值得注意的是,非本地应用程序环境还需要源自来自于AppInfo的 合适的类;图2也示出了对于Java Midlet如何能实现这一点。
关于安全性,实现单一集中的应用程序管理实体有助于每个可 执行程序许可的一致安装时间(installation-time)分配。这种方法 允许采用基于可执行模式的许可(或权能),例如在题为“Secure Mobile Wireless Device”的
专利申请GB 0312191.0中所披露的平台
安全模式。
本领域技术人员应该明白,这种高度控制的环境与更常规的 AMS模式完全相反。
通常,基于应用程序所给出的凭证(证书),许可或权能在安 装期间进行分配。这些许可然后由AMS坚持,并使得可由执行(实 时)环境获取。
应用于上述实施例,在J2ME MIDP2环境中,许可和实施可直 接对应于J2ME MIDP2安全模式。对于本地应用程序,安装可涉及 该应用程序所要求权能的验证。在这两种情况下,执行时间许可/ 权能检查是实时模式及相关API的内建特征。
下面将提供根据本发明的一个AMS结构实现的实例。本领域 技术人员应该很容易理解下面实例中所用的术语,因此本文上下文 中不再赘述。
从图2中,可以看到AMS结构包括6个接口,这些接口的函 数如下:
接口概述 AmsUI AmsUI接口允许应用程序定制AMS所要求的查询、信 息、警告、和错误消息的显示。 Downloader 用于安装的下载权能的抽象,其允许下载机制的定制。 Executable 对所有可执行应用程序公用的接口。 Executorlistener Executorlistener接口定义了一组允许AMS应用程序了解 正在执行的进程外部变化的召回方法。 Installable 对可安装应用程序公用的接口。 InstallerListener 通过执行该接口,应用程序可以签订关于应用程序的安 装、升级和卸载的通知。
涉及这些接口的类如下:
类概述 AmsEvent AmsEvent用于在应用程序管理API与应用程序之间传递 消息。 Applnfo AppInfo是常规应用程序描述符类。 Executor Executor类能够在查询当前可用与运行应用程序之间启 动、停止切换。 Installer Installer提供用于安装MIDlet套件和本地应用程序的必 要方法。 JavaDownloader 允许从本地
驱动器安装的Downloader接口的简化实例 MIDletlnfo 保持基本MIDlet信息 MIDletSuiteInfo 保持基本MIDletSuite信息 NativeAppInfo NativeAppInfo是本地应用程序描述符
异常概述 AMSException 通告关于应用程序管理错误
AMS中使用的类的详述和函数如下:
类AmsEvent
Java.lang.Object
|
+--.AmsEvent
公共类AmsEvent
扩展java.lang.Object
AmsEvent用于在应用程序管理API和应用程序之间传送消息。
应用程序将通常利用安装器(installer)或执行器(executor) 类来注册其监听程序已接受诸如应用程序被安装或运行的事件通 知。
字段概述 static int APP JAVA MIDLET 定义用于java MIDlets的应用程序类型 static int APP NATIVE APP 定义用于本地应用程序的应用程序类型 static int EVENT APP INSTALLED 定义用于应用程序安装事件的事件类型。 static int EVENT APP REMOVED 定义用于应用程序删除事件的事件类型。 static int EVENT APP STARTED 定义用于应用程序启动事件的事件类型。 static int EVENT APP STOPPED 定义用于应用程序停止事件的事件类型。 static int EVENT APP UPDATED 定义用于应用程序更新事件的事件类型。 static int EVENT EXE ADDED 定义用于可执行添加事件的事件类型。 static int EVENT EXE REMOVED 定义用于可执行删除事件的事件类型。
方法概述 int int getAppId1() 返回主应用程序ID。 getAppId2() 返回次要应用程序ID。 getAppType() int int AppInfo 返回该事件的应用程序类型。 getEventType() 返回该事件的事件类型。 getInfo() 获得与该事件相关的应用程序的应用程序描述符。 int 方法概述 getAppId1()
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
字段详述
EVENT_APP_INSTALLED
Public static final int EVENT_APP_INSTALLED
定义用于应用程序安装事件的事件类型。
EVENT_APP_UPDATED
Public static final int EVENT_APP_UPDATED
定义用于应用程序更新事件的事件类型。
EVENT_APP_REMOVED
Public static final int EVENT_APP_REMOVED
定义用于应用程序删除事件的事件类型。
EVENT_APP_STARTED
Public static final int EVENT_APP_STARTED
定义用于应用程序启动事件的事件类型。
EVENT_APP_STOPPED
Public static final int EVENT_APP_STOPPED
定义用于应用程序停止事件的事件类型。
EVENT_EXE_ADDED
Public static final int EVENT_EXE_ADDED
定义用于可执行添加事件的事件类型。
EVENT_EXE_REMOVED
Public static final int EVENT_EXE_REMOVED
定义用于可执行删除事件的事件类型。
APP_JAVA_MIDLET
Public static final int APP_JAVA_MIDLET
定义用于java MIDlets的应用程序类型。
APP_NATIVE_APP
Public static final int APP_NATIVE_APP
定义用于本地应用程序的应用程序类型。
方法详述
getAppld 1
public static int getAppld 1()
返回主要应用程序ID。对于MIDlets,其对应于MIDlet套件 ID。
对于本地应用程序,其为应用程序ID。
返回:应用程序ID。
getAppld2
public static int getAppld2()
返回次要应用程序ID。对于MIDlets,其对应于MIDlet ID。
对于本地应用程序,该值可以被忽略。
返回:次要应用程序ID。
getAppType
public static int getAppType()
返回该事件的应用程序类型。
返回:该事件的应用程序类型。
getEventType
public static int getEventType()
返回该事件的事件类型。
返回:该事件的事件类型。
getInfo
public AppInfo getInfo()
获得用于与该事件有关的应用程序的应用程序描述符。
返回:用于与该事件有关的应用程序的应用程序描述符。
类AMSException
Java.lang.Obj ect
|
+--.java.lang.Throwable
|
+--.java.lang.Exception
|
+--.AMSException
所有实现的接口:java.io.Serializable
公共类AMSException
扩展java.lang.Exception
通告应用程序管理错误。
构造器概述 AMSException(java.lang.String aMessage) 利用
指定的消息创建新AMSException。
从类java.lang.Throwable继承的方法 fillInStackTrace,getCause,getLocalizedMessage,getMessage, getStackTrace,initCause,printStackTrace,printStackTrace, printStackTrace,setStackTrace,toString
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,wait, wait,wait
构造器详述
AMSException
Public AMSException(java.lang.String aMessage)
利用指定的消息创建新的AMSException。
参数:aMessage-消息串
接口AmsUI
公共接口AmsUI
AmsUI接口允许应用程序定制AMS需要的查询、信息、警告 以及错误消息的显示。
典型的实施例将通过检查查询类型、添加选项以及然后显示对 话来实现查询。
该接口可以被扩展以允许生成定制对话(诸如安装改进)
字段概述 static int ERROR 定义ERROR误对话类型。 static int INFO 定义INFO对话类型。 static int static int OPT CANCEL 定义CANCEL选项。 OPT NO 定义NO选项。 OPT OK static int 定义OK选项。 OPT YES static int 定义YES选项。 QUERY static int static int 定义QUERY对话类型。 WARNING 定义WARNING对话类型。 字段概述 ERROR static int
方法概述 int query(int aType,int AOptions, java.lang.String aQuery String) 呈现给用户消息或查询。
字段详述
OPT_YES
Public static final int OPT_YES
定义YES选项。
该值用作查询方法中的参数和返回值。
OPT_OK
Public static final int OPT_OK
定义OK选项。
该值用作查询方法中的参数和返回值。
OPT_NO
Public static final int OPT_NO
定义NO选项。
该值用作查询方法中的参数和返回值。
OPT_CANCEL
Public static final int OPT_CANCEL
定义CANCEL选项。
该值用作查询方法中的参数和返回值。
QUERY
Public static final int QUERY
定义QUERY会话类型。
INFO
Public static final int INFO
定义INFO会话类型。
WARNING
Public static final int WARNING
定义WARNING会话类型。
ERROR
Public static final int ERROR
定义ERROR会话类型。
方法详述
query
public int query(int a Type,
int aOptions,
java.lang.String aQueryString)
为用户呈现消息或查询。
该方法是同步的,并且只在查询对话关闭时返回。
参数:
aType- QUERY, INFO, WARNING, ERROR之一
aOptions-或 OPT_YES, OPT_OK, OPT_NO, OPT_CANCEL的组合
aQueryString-呈现给用户的字串。
返回:
基于用户的响应,返回值为 OPT_YES, OPT_OK, OPT_NO,
OPT_CANCEL中的一个。
类AppInfo
Java.lang.Obj ect
|
+--.AppInfo
直接得知子类: MIDletInfo, MIDletSuiteInfo, NativeAppInfo
Public abstract class APPInfo
扩展java.lang.Object
AppInfo是通用应用程序描述符类。
EJF AMS架构支持本地应用程序和Java MIDlets。这两种应用 程序类型在其安装和管理方面非常不同。此外,Java MIDP说明具 有将MIDlets作为可运行的应用程序以及MIDlet套件作为可安装的 应用程序套件的概念。实际上,一个可以只运行MIDlets,并且可 以只安装/卸载MIDlet套件。本地应用程序有点更简单,这是由于 它们在安装和执行时都是最小的(atom)。
作为用于所有应用程序的抽象基类,AppInfo是否可以被安装 和运行是不可知的。
由于以不同的方式完成不同应用程序类型的安装和执行,因此 这项工作被授予了应用程序类型具体实施者。
字段概述 static int static int RUNNING 应用程序生命周期中对应于RUNNING状态的常量 STOPPED 表示除了RUNNING以外的所有应用程序状态的常量 字段概述 RUNNING
构造器概述 AppInf0()
方法概述 abstract java.lang.String getIcon() 得到应用程序图标。 abstract java.lang.String getName() 得到应用程序名称。 abstract java.lang.String getProperty(java.lang.String aProperty) 得到应用程序属性。 abstract int getState() 得到应用程序状态。
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notify All,toString, wait,wait,wait
字段详述
STOPPED
Public static final int STOPPED
表示除了RUNNING以外的所有应用程序状态的常量。
RUNNING
Public static final int RUNNING
应用程序生命周期中对应于RUNNING状态的常量。
构造器详述
AppInfo
public AppInfo()
方法详述
getName
public abstract java.lang.String getName()
获得应用程序名称。
返回:
应用程序名称。
getIcon
public abstract java.lang.String getIcon()
获得应用程序图标。
返回:
应用程序图标
getState
public abstract int getState()
获得应用程序状态。
返回:
应用程序状态。
getProperty
public abstract java.lang.String
getProperty(java.lang.String aPropertyName)
得到应用程序属性。
参数:
aPropertyName-查询属性。
返回:
如果存在返回需要的应用程序属性,否则返回空。
接口Downloader
所有已知的实现类: JavaDownloader
公共接口Downloader
用于安装的下载能力的抽象允许定制下载机制。例如,特定的下载 机可以用于将实现OTA需要的OTA安装。
方法概述 java.lang.String download(java.lang.String aUri, java.lang.String aReferrer) 下载URI内容并返回下载的文件的路径 方法概述
方法详述
download
public java.lang.String download(java.lang.String aUri,
java.lang.String aReferrer)
通告 AMSException
下载URI内容并返回下载的文件的路径.
URI可以是相对的或绝对的。但提供了相对的URI时,来源页 面地址参数用于获得完整的URL。
参数:
aUri-相对或绝对URI
aReferrer-如果Uri是相对的,来源页面地址用于获得基URI
返回:
下载的文件的路径
抛出:
AMSException-如果出现错误
可执行接口(interface executable)
所有已知的实现类: MIDletInfo, NativeAppInfo
公共可执行接口
所有可执行应用程序的公共接口
方法概述 AppInfo getExecutableAppInfo() 得到用于该可执行程序的AppInfo。 Installable getInstallable() 得到与该应用程序相关的可安装。 方法概述
方法详述
getInstallable
public InstallablegetInstallable()
得到与该应用程序相关的可安装。
返回:
该可执行的父级可安装。
getExecutableAppInfo
public AppInfo getExecutableAppInfo()
得到用于该可执行程序的AppInfo。
返回:
包括关于该可执行的信息的AppInfo对象。
类Executor
Java.lang.Obj ect
|
+--.Executor
公共类Executor
扩展java.lang.Object
该执行器类能够执行启动、停止查询当前可得到的应用程序和 运行应用程序之间的切换。
方法概述 Static void addListener(ExecutorListene r aListener) 注册监听程序。 Static void close (Executable a Executable) 停止当前运行可执行。 Static void execute( Executable aExecutable) 运行可执行。 Static java.util.Enumeration listExecutables() 返回可执行应用程序的列表。 Static java.util.Enumeration Static void listRunning() 返回运行应用程序的列表。 Refresh() 清除所有缓存数据。 removeListener( InstallerListener aListener)解 Static boolean 除注册监听程序。 runSystem() Static void 使系统处于“发射(launcher)”视图(view) SetUiHandler( AmsUI aUI) Static vo id Static void 设置用于用户交互的UI。 switchTo( Executable aExecutable) 切换至已经运行的应用程序。 方法概述 addListener(ExecutorListene r aListener)
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
setUiHandler
public static void SetUiHandler( AmsUI aUI)
设置用于用户交互的UI。
注意,查询是单播的,即,在同一VM中不能注册有多个UI 处理机。
将UI处理机设置为无效使不能进行UI查询并且响应所有的 查询的被认为使OPT_YES|OPT_OK。
参数:
aUI-将被用于用户交互的AmsUI实例。
addListener
public static void addListener( ExecutorListener aListener)
注册监听程序。
参数:aListener-添加监听程序。
通告:java.lang.IllegalArgumentException-如果提供的参数无效。
removeListener
public static_boolean removeListener( Executorlistener aListener)
解除注册监听程序。
参数:
aListener-删除的监听程序。
返回:
如果需要的监听程序是注册的则返回真,否则返回假。
通告:java.lang.IllegalArgumentException-如果提供的参数无效。
listRunning
public static_java.util.Enumeration listRunning()
通告 AMSException
返回运行应用程序的列表。
返回:
表示当前运行应用程序的可执行对象的枚举。
AMSException
listExecutables
public static_java.util.Enumeration listExecutables()
通告 AMSException
返回可执行应用程序的列表。
返回:
可执行对象的枚举。
AMSException
close
public Static void close( Executable aExecutable)
通告 AMSException
停止当前运行的可执行。
参数:
aExecutable-停止可执行。
通告:如果出现错误,通告 AMSException
refresh
public Static void refresh()
清除任何缓存数据。需要时得到新的数据副本。
execute
public Static void execute( Executable aExecutable)
通告 AMSException
运行可执行。
参数:aExecutable-执行可执行
通告:如果出现错误,通告 AMSException
switchTo
public Static void switchTo( Executable aExecutable)
通告 AMSException
切换至已经运行的应用程序。
参数:aExecutable-执行可执行
通告:如果出现错误,通告 AMSException
runSystem
public Static void runSystem()
通告 AMSException
使系统处于“发射”的视图(view)。
通告:如果出现错误,通告 AMSException。
接口ExecutorListener
公共接口ExecutorListener
ExecutorListener接口定义了一套调用方法,这些方法允许AMS 应用程序了解外部对正在进行的处理的改变。
该方面的一个简单的实例是通知应用程序在从操作解释程序 启动之后已经关闭。
方法概述 void appAdded( AmsEvent aEvent) 通知监听程序应用程序已经安装。 void appClosed( AmsEvent aEvent) 通知监听程序应用程序已经结束。 void appRemovedd( AmsEvent aEvent) 通知监听程序应用程序已被删除。 void appStarted( AmsEvent aEvent) 通知监听程序应用程序已经启动。
方法详述
appStarted
public void appStarted( AmsEvent aEvent)
通知监听程序应用程序已经启动。
参数:aEvent-包括时间详述的AmsEvent。
appClosed
public void appClosed( AmsEvent aEvent)
通知监听程序应用程序已经结束。
参数:aEvent-包括时间详述的AmsEvent。
appAdded
public void appAdded( AmsEvent aEvent)
通知监听程序应用程序已经安装。
参数:aEvent-包括时间详述的AmsEvent。
appRemoved
public void appRemoved( AmsEvent aEvent)
通知监听程序应用程序已经删除。
参数:aEvent-包括时间详述的AmsEvent。
类File
Java.lang.Object
|
+--.File
公共类File
扩展java.lang.Object
最小文件类、存储文件名、允许得到父级以及检查文件是否是目录。
字段概述 static int KEntryAttArchive static int KEntryAttDir static int KEntryAttHidden static int KEntryAttReadOnly static int KEntryAttSystem static int KEntryAttVolume
方法概述 Java.lang.String getAbsolutePath() 返回该文件的全路径,包括文件名。 Java.lang.String getName() 返回不带有路径的文件或目录名。 Java.lang.String getPath() 返回文件的全路径,不带有文件名。 boolean boolean isDirectory 检查该文件是否是目录。 isHidden() 检查该文件是否是目录。 isReadOnly() boolean boolean boolean 检查该文件是否是目录。 isRoot() 检查该文件是否是根。 isSystem() Java.lang.String 检查该文件是否是目录。 方法概述 getAbsolutePath() 返回该文件的全路径,包括文件名。 getName()
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
字段详述
KEntryAttReadOnly
Public static finalint KEntryAttReadOnly
KEntryAttHidden
Public static final int KEntryAttHidden
KEntryAttSystem
Public static finalint KEntryAttSystem
KEntryAttVolume
Public static finalint KEntryAttVolume
KEntryAttDir
Public static final int KEntryADttir
KEntryAttArchive
Public static final int KentryAttArchive
方法详述
isDirectory
public Boolean isDirectory()
检查该文件是否是目录
Return:
通告:
Java.lang.Exception
isRoot
public Boolean isRoot()
检查该文件是否是目录
Return:
通告:
Java.lang.Exception
isReadOnly
public Boolean isReadOnly()
检查该文件是否是目录
Return:
通告:
Java.lang.Exception
isHidden
public Boolean isHidden()
检查该文件是否是目录
Return:
通告:
Java.lang.Exception
isSystem
public Boolean isSystem()
检查该文件是否是目录
Return:
通告:
Java.lang.Exception
getPath
public java.lang.String getPath()
返回文件的全路径,没有文件名
Return:
没有文件名的文件的全路径
getName
public java.lang.String getName()
返回没有路径的文件或目录的名称
Return:
没有路径的文件或目录的名称
getAbsolutePath
public java.lang.String getAbsolutePath()
返回文件的全路径,包括文件名
Return:
包括文件名的文件的全路径
类FileSystem
java.lang.Object
|
+--.FileSystem
Public class FileSystem
Extends java.lang.Object
最小的、纯粹的文件系统存取接口,允许列出当前驱动器、目录内 容以及加载文件。
构造器概述 FileSystem()
方法概述 Static java.util.Enumeration listFiles(java.lang.String aDirectory) 返回表示指定目录中的所有文件的文件对象 的枚举。 Static java.util.Enumeration listRoots() 返回存在于装置上的驱动器的列表。 Static byte() loadFile(java.lang.String aFile) 加载文件内容。
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
构造器详述
FileSystem
Public FileSystem()
方法详述
listRoots
public static java.util.Enumeration listRoots()
返回存在于装置上的驱动器列表
返回:
当前存在于装置上的驱动器列表
listFiles
public static java.util.Enumeration listFiles(java.lang.String aDirectory)
通告java.lang.Exception
返回表示指定目录中的所有文件的文件对象的枚举
参数:
aDirectory-将列出的目录
返回:
指定目录中的所有文件的枚举
通告:
java.lang.Exception-如果参数不存在或不是目录
loadFile
public static byte[]loadFile(java.lang.String aFile)
通告java.io.IOException
加载文件的内容
参数:
aFile-将加载的文件路径
通告:
java.io.IOException-如果出现IO错误
可安装的接口
所有已知的实现类:
MIDletSuiteInfo, NativeAppInfo
公共可安装接口
可安装应用程序的公共接口
方法概述 Java.util.Enumeration getExecutables() 列出与该可安装有关的可执行 AppInfo getInstallableAppInfo() 得到表示该可安装应用程序的AppInfo对象
方法详述
getExecutables
public java.util.Enumeration getExecutables()
列出与该可安装有关的可执行
返回:
可执行对象的枚举
getInstallableAppInfo()
public AppInfo getInstallableAppInfo()
获得表示该可安装应用程序的 appInfo对象
返回:
与该可安装有关的AppInfo
类Installer
Java.lang.Obj ect
|
+--.Installer
公共类Installer
扩展java.lang.Object
该安装器提供用于安装MIDlet套件核本地应用程序的必需方 法。
方法概述 Static void addListener( InstallerListener aListener) 注册监听程序。 Static void Install(java.lang.String aFile) 从文件安装应用程序。 Static java.util.Enumeration listInstalledApps() 列出安装的应用程序。 Static void Refresh() 清除所有缓存数据。 Static void remove( Installable aInstallable) 卸载指定的应用程序 Static boolean removeListener( InstallerListener aListener) 解除注册监听程序 Static vo id SetUiHandler( AmsUI aUI) 设置用于用户交互的UI。 Static void update( Installable aInstallable) 更新指定的应用程序
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
setUiHandler
public static void setUiHandler()( AmsUI aUI)
设置用于用户交互的UI。
参数:
aUI-用于用户交互的AmsUI实例
addListener
public static void addListener( InstallerListener aListener)
注册监听程序
参数:
aListener-监听程序注册
removeListener
public static Boolean removeListener( InstallerListener aListener)
解除注册监听程序
参数:
aListener-监听程序解除注册
返回:
如果监听程序在本次调用时没有注册,该方法返回假,否则返 回真。
通告:
java.lang.IllegalArgumentException-如果提供的监听程序为空。
listInstalledApps
public static java.util.Enumeration listInstalledApps()
通告AMSException
列出安装的应用程序
返回的列表将包含所有的本地应用程序核MIDlet套件,但不 包含单独的MIDlets。
返回:
可安装对象的枚举
通告:
AMSException-如果出现错误
Install
Public static void install(java.lang.String aFile)
通告AMSException
从文件安装应用程序
该文件可以指向三种文件类型之一:
●jad-Java应用程序描述符
●jar-Java归档
●zip-用于安装本地应用程序
参数:
aFile-安装文件
通告:
AMSException-如果出现错误
remove
public static void remove( Installable aInstallable)
通告 AMSException
卸载指定的应用程序
参数:
aInstallable-卸载可安装的
通告:
AMSException-如果出现错误
refresh
public static void refresh()
清除任何缓存数据。需要时获得数据的新副本。
update
public static void update( Installable aInstallable)
通告 AMSException
更新指定的应用程序。
参数:
aInstallable-更新可安装的
通告:
AMSException-如果出现错误
接口InstallerListener
公共接口 InstallerListener
通过实现该接口应用程序可以订阅应用程序的安装、更新核卸 载的通知。
典型的动作将刷新显示安装的应用程序的用户接口。
方法概述 void appInstalled(AmsEvent aEvent) 通知监听程序应用程序已经被安装 void appRemoved(AmsEvent aEvent) 通知监听程序应用程序已经被删除 void appUpdated(AmsEvent aEvent) 通知监听程序应用程序已经被更新
方法详述
appInstalled
public void appInstalled( AmsEvent aEvent)
通知监听程序应用程序已经被安装。
参数:
aEvent-AmsEvent包含事件详述。
appUpdated
public void appUpdated( AmsEvent aEvent)
通知监听程序应用程序已经被更新。
参数:
aEvent-AmsEvent包含事件详述。
appRemoved
public void appRemoved( AmsEvent aEvent)
通知监听程序应用程序已经被删除。
参数:
aEvent-AmsEvent包含事件详述。
类JavaDownloader
java.lang.Object
|
+--.JavaDownloader
所有实现的接口:
Downloader
公共类JavaDownloader
扩展java.lang.Object
实现 Downloader
允许从本地驱动器安装的 Downloader接口的简单实现。
构造器概述 JavaDownloader() 创建新的 JavaDownloader
方法概述 Java.lang.String download(java.lang.String aUri,java.lang.String aReferrer) 返回安装文件的路径 方法概述
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
构造器详述
JavaDownloader
Public JavaDownloader()
创建新的JavaDownloader。
方法详述
download
public java.lang.String download(java.lang.String aUri,
java.lang.String aReferrer)
通告 AMSException
返回安装文件的路径。如果aUri是相对的,则参考器 (referrer)用于确定全文件路径。
Specified by:
接口Downloader中的 download
参数:
aUri-安装文件的绝对或相对路径
aReferrer-如果aUri是相对的,aReferrer用于确定全文件路 径
返回:
安装文件的路径。
通告:
AMSException-如果出现错误
类MIDletInfo
Java.lang.Obj ect
|
+--. AppInfo
|
+--.MIDletInfo
所有实现的接口:
Executable
Public final class MIDletInfo
扩展 AppInfo
实现 Executable
保持基本MIDlet信息
字段概述
从类.AppInfo继承的字段 RUNNING,STOPPED
方法概述 boolean Equals(java.lang.Object aOther) 将该对象与另一个对象进行比较 AppInfo getAppInfo() 返回该参考。 AppInfo getExecutableAppInfo() 实现可执行。 Java.lang.String getIcon() 获得应用程序图标。 installable getInstallable() 获得包含该可执行的可安装 MIDletSuiteInfo getMIDletSuiteInfo() 获得封装的MIDlet套件 jva.lang.String getName() 获得MIDlet名称。 jva.lang.String getProperty(java.lang.Object aPropertyName) 实现AppInfo。 int getState() 获得MIDlet状态
从类java.lang.Object继承的方法 clone,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
getName
public java.lang.String getName()
获得MIDlet名称。
由类 AppInfo中的 getName指定
返回:
MIDlet名称
getIcon
public java.lang.String getIcon()
获得应用程序图标。
由类 AppInfo中的 getIcon指定
返回:
应用程序图标
getProperty
public java.lang.String getProperty(java.lang.String aPropertyName)
实现 AppInfo。
由类 AppInfo中的 getProperty指定
参数:
aPropertyName-查询属性名称。
返回:
在本地应用程序不被支持时返回空。
getExecutableAppInfo
public A ppInfo getExecutableAppInfo()
实现可执行。
由接口 Executable中的 getExecutableAppInfo指定
返回:
参考该对象。
getState
public int getState()
获得MIDlet状态。
由类 AppInfo中的 getState指定
返回:
MIDlet状态。
getMIDletSuiteInfo
public MIDletSuiteInfo getMIDletSuiteInfo()
获得封装的MIDlet套件。
返回:
封装的MIDlet套件描述符对象。
Equals
public Boolean equals(java.lang.Object aOther)
将该对象与其他对象进行比较。
忽略(Overrides):类java.lang.Object中的equals
类java.lang.Object中的equals
参数:
aOther-比较的对象。
返回:
如果提供的MIDletInfo对象属于相同的MIDlet套件并且具 有与该对象相同的MIDlet ID,返回真。
getInstallable
public Installable getInstallable()
获得包含该可执行的可安装。
由接口 Executable中的 getInstallable指定。
返回:
该可执行的父级(parent)可执行。
getAppInfo
public AppInfogetAppInfo()
返回该参考。该方法实现可执行接口。
返回:
该参考。
类MIDletInfo
Java.lang.Object
|
+--.AppInfo
|
+--.MIDletInfo
所有实现的接口: Executable(可执行)
public final class MIDletInfo
扩展 AppInfo
实现 Executable
保持基本MIDlet信息。
字段概述
从类. AppInfo继承的字段 RUNNING, STOPPED
方法概述 boolean Equals(java.lang.Object aOther) 将该对象与另一个对象进行比较 AppInfo AppInfo getAppInfo() 返回该参考。 getExecutableAppInfo() 实现可执行。 getIcon() Java.lang.String 获得应用程序图标。 方法概述
installable getInstallable() 获得包含该可执行的可安装 MIDletSuiteInfo MIDletSuiteInfo() 获得封装的MIDlet套件 jva.lang.String jva.lang.String getName() 获得MIDlet名称。 getProperty(java.lang.Object aPropertyName) 实现AppInfo。 getState() int getInstallable() 获得MIDlet状态 installable
从类java.lang.Object继承的方法 clone,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
getName
public java.lang.String getName()
获得MIDlet名称。
由类 AppInfo中的 getName指定
返回:
MIDlet名称
getIcon
public java.lang.String getIcon()
获得应用程序图标。
由类 AppInfo中的 getIcon指定
返回:
应用程序图标
getProperty
public java.lang.String getProperty(java.lang.String aPropertyName)
实现AppInfo。
由类 AppInfo中的 getProperty指定
参数:
aPropertyName-查询属性名称。
返回:
在本地应用程序不被支持时返回空。
getExecutableAppInfo
public AppInfogetExecutableAppInfo()
实现可执行。
由接口 Executable中的 getExecutableAppInfo指定
返回:
参考该对象。
getState
public int getState()
获得MIDlet状态。
由类 AppInfo中的 getState指定
返回:
MIDlet状态。
getMIDletSuiteInfo
public MIDletSuiteInfo getMIDletSuiteInfo()
获得封装的MIDlet套件。
返回:
封装的MIDlet套件描述符对象。
Equals
public boolean equals(java.lang.Object aOther)
将该对象与其他对象进行比较。
忽略(Overrides):类java.lang.Object中的equals
类java.lang.Object中的equals
参数:
aOther-比较的对象。
返回:
如果提供的MIDletInfo对象属于相同的MIDlet套件并且具 有与该对象相同的MIDlet ID,返回真。
getInstallable
public Installable getInstallable()
获得包含该可执行的可安装。
由接口 Executable中的 getInstallable指定。
返回:
该可执行的父级(parent)可执行。
getAppInfo
public AppInfo getAppInfo()
返回该参考。该方法实现可执行接口。
返回:
该参考。
Class MIDletSuiteInfo
Java.lang.Object
|
+-- .AppInfo
|
+--.MIDletSuiteInfo
所有实现的接口: Installable(可安装)
公共类MIDletSuiteInfo
扩展 AppInfo
实现 Installable
保持基本MIDletSuite信息。
字段概述
从类. AppInfo继承的字段 RUNNING,STOPPED
方法概述 boolean Equals(java.lang.Object aOther) 测试该MIDletSuiteInfo是否指的是与所提供的参 数相同的MIDlet套件。 Java.lang.Enumeration getExecutables() 实现可安装。 Java.lang.String getIcon() 获得应用程序图标。 AppInfo getInstallableAppInfo() 实现可安装。 MIDletInfo[] getMIDletInfo() 获得MIDlets。 java.lang.String java.lang.String getName() 获得MIDlet套件名称。 getProperty(java.lang.Object aPropertyName) 实现AppInfo。 getState() int Java.lang.String 获得MIDlet状态 getVendor() 获得MIDlet套件卖主。 getVersion() Java.lang.String 获得MIDlet套件版本。 方法概述 Equals(java.lang.Object aOther) 测试该MIDletSuiteInfo是否指的是与所提供的参 boolean
从类java.lang.Object继承的方法 clone,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
getName
public java.lang.String getName()
获得MIDlet套件名称。
由类 AppInfo中的 getName指定
返回:
MIDlet套件名称。
getIcon
public java.lang.String getIcon()
获得应用程序图标。
由类 AppInfo中的 getIcon指定
返回:
应用程序图标
getVendor
public java.lang.String getVendor()
获得MIDlet套件卖主。
返回:
MIDlet套件卖主。
getVersion
public java.lang.String getVersion()
获得MIDlet套件版本。
返回:
MIDlet套件版本。
getMIDletInfo
public MIDletInfo[]getMIDletInfo()
获得MIDlets。
返回:
对应于来自该MIDlet套件的MIDlets的MIDletInfo对象的 数组。
Equals
public boolean equals(java.lang.Object aOther)
测试该MIDletSuiteInfo是否指的是与所提供的参数相同的 MIDlet套件。
忽略(Overrides):类java.lang.Object中的equals
类java.lang.Object中的equals
参数:
aOther-比较的对象。
返回:
如果两个MIDletSuiteInfo对象指的是相同的MIDlet套件返 回真,否则返回假。
getInstallableAppInfo
public AppInfo getInstallableAppInfo()
实现可安装。
由接口 Installable中的 getInstallableAppInfo指定。
返回:
该对象的参考。
getExecutables
public Java.util.Enumeration getExecutables()
实现可安装。列出与该可安装相关的可执行。
由接口 Installable中的 getExecutables指定。
返回:
可执行对象的枚举。
getProperty
public java.lang.String getProperty(java.lang.String aPropertyName)
实现AppInfo。
由类 AppInfo中的 getProperty指定
参数:
aPropertyName-查询属性名称。
返回:
在本地应用程序不被支持时返回空。
getState
public int getState()
获得应用程序状态。
由类 AppInfo中的 getState指定
返回:
应用程序状态。
类MRUCache
Java.lang.Obj ect
|
+--.MRUCache
公共类MRUCache
扩展java.lang.Object
最近使用的(MRU)对象缓存。
构造器概述 MRUCache() 创建具有20项的最大尺寸的新缓存 MURCache(int aMaxEntries) 创建具有指定最大尺寸的新缓存
方法概述 boolean Java.lang.Object containsKey(java.lang.Object aKey) 检查缓存是否包含指定的密钥。 get(java.lang.Object aKey) 将所需的项移到缓存的前面。 put(java.lang.Object aKey,java.lang.Object aData) void 通过将对象放置在列表的顶部来将对象存储在缓 存中。如果对象在缓存中,将其提升到列表的顶部。 remove(java.lang.Object aKey) void 实现可安装。 方法概述
从类java.lang.Object继承的方法 clone,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
构造器详述
MRU Cache
公共MRUCache()
创建具有20项的最大尺寸的新缓存。
MRUCache
公共MRUCache(int aMaxEntries)
创建具有指定的最大尺寸的新缓存。
参数:
aMaxEntries-该缓存对象可以存储的对象的最大数量。
方法详述
containsKey
public boolean containsKey(java.lang.Object aKey)
检查缓存是否包含指定的密钥。
返回:
如果缓存中存在密钥返回真。
put
public void put(java.lang.Object aKey,java.lang.Object aData)
该方法通过将对象放置到列表的顶部来将该对象存储在缓存 中。如果对象在缓存中,将其提升到列表的顶部。如果对象不在缓 存中,则将其添加到列表的顶部,然后检查缓存的最大尺寸核新尺 寸,来查看是否需要从缓存中删除最后的元素。
remove
public void remove(java.lang.Object aKey)
get
public java.lang.Object get(java.lang.Object aKey)
将需要的项移动到缓存的前面。
Class NativeAppInfo
Java.lang.Object
|
+-- .AppInfo
|
+--.NativeAppInfo
所有实现的接口: Executable, Installable
公共类NativeAppInfo
扩展 AppInfo
实现 Installable, Executable
NativeAppInfo是本地应用程序的描述符。
字段概述
从类. AppInfo继承的字段 RUNNING,STOPPED
方法概述 AppInfo getExecutableAppInfo() 实现可执行。 java.util.Enumeration getExecutables() 实现可安装。 Java.lang.String getIcon() 获得应用程序图标。 installable getInstallable() 获得与该应用程序相关的可安装。 AppInfo getInstallableAppInfo() 实现可安装。 java.lang.String java.lang.String getName() 获得应用程序名称。 getProperty(java.lang.Object aPropertyName) 实现可安装。 getState() int 获得应用程序状态 方法概述 getExecutableAppInfo()
从类java.lang.Object继承的方法 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString, wait,wait,wait
方法详述
getName
public java.lang.String getName()
获得应用程序名称。
由类 AppInfo中的 getName指定
返回:
应用程序名称。
getIcon
public java.lang.String getIcon()
获得应用程序图标。
由类 AppInfo中的 getIcon指定
返回:
应用程序图标
getState
public int getState()
获得应用程序状态。
由类 AppInfo中的 getState指定
返回:
应用程序状态。
还看 AppInfo.STOPPED, AppInfo.RUNNING
getExecutableAppInfo
public AppInfo getExecutableAppInfo()
实现可执行。
由接口 Executable中的 getExecutableAppInfo指定
返回:
参考该对象。
getInstallable
public Installable getInstallable()
从Executable接口复制的描述
获得与该应用程序有关的可安装。
由接口 Executable中的 getInstallable指定。
返回:
该可执行的父级可安装。
getInstallableAppInfo
public AppInfo getInstallableAppInfo()
实现可安装。
由接口 Installable中的 getInstallableAppInfo指定。
返回:
该对象的参考。
getExecutables
public Java.util.Enumeration getExecutables()
实现可安装。列出与该可安装相关的可执行。
由接口 Installable中的 getExecutables指定。
返回:
可执行对象的枚举。
getProperty
public java.lang.String getProperty(java.lang.String aPropertyName)
实现AppInfo。
由类 AppInfo中的 getProperty指定
参数:
aPropertyName-查询属性。
返回:
在本地应用程序不被支持时返回空。
从上述实施例可以看出,本发明披露了一种方法,用于提供一 种单操作系统方法,可集中管理:
●应用程序生命周期(包括安装、执行状态、卸载)
●应用程序权能
●长寿OS层应用程序拥有的资源(例如,推出连接、警告)
●安全性
因此,可以认为本发明相对于现有应用程序的管理方法提供了 以下优点,包括:
●全部应用程序生命周期(包括安装、执行、终止和卸载的 所有阶段)都由单个统一的AMS实体管理。
●该统一的AMS支持应用程序拥有的OS层资源(例如连接 和警告),其生命周期扩展到超过应用程序执行的生命周期。
●该统一的AMS易于
修改和扩展任何应用程序类型。
●该统一的AMS支持多个执行模式和多个执行子系统。
●该统一的AMS易于修改和扩展任何新执行模式和子系统。
●单一应用程序管理系统能够处理(例如)本地应用程序、 Java应用程序、BREW应用程序和Appforge风格的Visual Basic应 用程序。
●该AMS是对安装和运行所有类型的可执行程序具有垄断 性的操作系统服务;这使得可对整个系统执行公用的安全策略。
尽管上文参照具体实施例描述了本发明,应该明白的是,可以 进行修改,而仍然落入所附
权利要求书所限定的本发明范围。