首页 / 专利库 / 广播 / Xlet / 一种维护计算装置中的应用程序的方法

一种维护计算装置中的应用程序的方法

阅读:496发布:2020-06-14

专利汇可以提供一种维护计算装置中的应用程序的方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种用于管理计算装置上的用户应用程序的应用程序生命周期的方法。该方法可以集中地管理各种应用程序的●应用程序生命周期(包括安装、执行状态、卸载)●应用程序权能●长寿OS层应用程序拥有的资源(例如,推出连接、警告)●安全性,而无论应用程序类型或模式或 执行环境 。,下面是一种维护计算装置中的应用程序的方法专利的具体信息内容。

1.一种用于管理计算装置上的用户应用程序的应用程序生命周 期的方法,所述方法包括:提供用于管理多种应用程序模式和 多种应用程序环境的应用程序管理系统(AMS),其中,所述 AMS作为所述计算装置的操作系统内的组件来实现,并授权 所述操作系统控制所述装置上的所有应用程序管理功能。
2.根据权利要求1所述的方法,其中,所述用户应用程序包括以 下任一种或多种,或其组合:
a.本地应用程序,其直接与所述装置上的所述操作系统 交互;
b.任何类型的Java应用程序,包括但不限于不受管理的 应用程序、midlet、applet和xlet,其与Java虚拟机交互;
c.被设计用于BREW应用程序环境的应用程序;
d.被设计通过语言解释器运行的应用程序,包括但不限 于Fortran、Forth、Lisp、BASIC、VisualBasic或Perl;
e.被设计用于在Web浏览器内运行的应用程序;
f.用中间码编写的应用程序,例如用pCode编写的Pascal 应用程序;
g.用机器码编写的应用程序,所述机器码用于处理器或 所述装置中的处理器;或者
h.被设计用于在所述装置上在任何其他应用程序模式和 /或运行时子系统下运行的任何形式的程序。
3.根据权利要求1或2所述的方法,其中,所述AMS可扩展用 于允许支持增加其他应用程序模式和/或运行时子系统。
4.根据权利要求1至3任一项所述的方法,其中,所述应用程序 生命周期包括以下任一种或多种,或其组合:
a.应用程序的安装;
b.应用程序的加载;
c.应用程序的执行;
d.应用程序的挂起;
e.应用程序的恢复;
f.应用程序的终止;
g.应用程序的删除或卸载;
h.应用程序的任何其他生命周期操作。
5.根据前述权利要求中任一项所述的方法,其中,所述AMS管 理操作系统或由任何用户应用程序所拥有或涉及的硬件资源。
6.根据权利要求5所述的方法,其中,所述AMS可以根据操作 系统或由任何用户应用程序所拥有或涉及的硬件资源的状态 中变化,而改变任何应用程序的生命周期状态。
7.根据前述权利要求中任一项所述的方法,其中,所述AMS用 于管理任何应用程序的生命周期属性。
8.根据前述权利要求中任一项所述的方法,其中,所述AMS保 存以下任一项或全部的记录:
a.当前安装于所述装置上所有应用程序;
b.所有在运行的应用程序的状态;
c.操作系统资源;
d.硬件资源;
e.一组硬件和/或操作系统资源到资源相关事件、应用程 序、应用程序状态、和动作的映射。
9.根据前述权利要求中任一项所述的方法,其中,所述AMS包 括服务程序,多个应用程序可以作为客户机连接至所述服务程 序。
10.根据前述权利要求中任一项所述的方法,其中,可以由所述 AMS各自地管理应用程序的多个实例。
11.根据前述权利要求中任一项所述的方法,其中,第一组函数处 理关于所有应用程序的安装和卸载的应用程序状态;另一组函 数处理关于所有应用程序的每个实例的执行的应用程序状态。
12.根据前述权利要求中任一项所述的方法,其中,一组或多组 AMS监听程序函数向应用程序提供事件通知。
13.根据前述权利要求中任一项所述的方法,其中,所述AMS包 括分层结构,所述分层结构包括公共API,其提供对生命周期 和资源管理所需功能的访问
14.根据前述权利要求中任一项所述的方法,其中,用于不能直接 访问本地AMS API的所有应用程序或可执行程序的应用程序 子系统或运行环境提供一组隔离层,其使能这种应用程序。
15.根据前述权利要求中任一项所述的方法,其中,所述AMS的 任意部分所采取的动作由分配给系统或用户应用程序的安全 属性所修改
16.根据前述权利要求中任一项所述的方法,其中,所述AMS的 任意部分所采取的动作由分配给所述装置的当前用户的所述 安全属性所修改。
17.根据前述权利要求中任一项所述的方法,其中,在所述装置上 安装或执行任何类型的可执行代码受限于所述AMS的使用。
18.根据前述权利要求中任一项所述的方法,其中,所述用户应用 程序包括可执行代码的所有独立可安装项例如库或提供扩展 功能的插件,而不论这些项是否可单独执行。
19.根据前述权利要求中任一项所述的方法,其中,所述用户应用 程序包括影响任何应用程序的运行的所有独立可安装数据集。
20.一种计算装置,用于根据权利要求1至19中任一项所述的方 法运行。
21.一种操作系统,用于使计算装置根据权利要求1至19中任一 项所述的方法运行。

说明书全文

技术领域

发明涉及一种维护计算装置中的应用程序(application)的 方法,具体而言,涉及一种方法,其通过计算装置上的操作系统以 统一的方式,而无论应用程序类型或者执行环境,来管理用户应用 程序的生命周期及其相关资源。

背景技术

本文所用的术语计算装置应广义地解释为涵盖任何形式的电 子计算装置,其包括数据记录装置、任何形式的计算机(包括手持 式和个人计算机)、以及任何形式因素的通信装置,其包括移动电 话、智能电话、集成通信、图像记录和/或回放、以及计算功能于一 体的通信机、以及其他形式的无线和有线信息装置。
直到二十年前,应用程序管理才成为很多计算装置的研究课 题。当操作员或用户从磁带或者磁盘一个个地加载应用程序时,应 用程序与介质之间的一一对应意味着操作员或用户通常准确地知 道加载了哪个应用程序;而早期的多用户操作系统允许同时加载多 个应用程序,操作系统与这些应用程序之间的交互一般是极易预测 的,并且这些应用程序本身之间的交互相当地少。其实,当时的应 用程序可分为两种:在运行的和未在运行的。
然而,低成本高容量磁盘存储的广泛普及使加载应用程序所涉 及的边际成本降低到几乎为零。低成本存储器的广泛普及极大地解 决了加载多个应用程序所导致的存储器争用问题。并且,操作系统 的不断发展导致产生了丰富的共享库和公用应用编程接口 (application programming interface,缩写为API),这促进了进程间 通信(inter-process communication)。
总之,这三个发展促进了三种应用程序概念。因而,除了上面 提及的两种应用程序(即,在运行的和不在运行的)以外,现在具 有第三种:“已安装”的应用程序。这些应用程序不是在运行的应 用程序,但它们可以加载到本地存储器中,并且在安装它们时,一 般会使操作系统发生一些变化:例如,升级或安装系统库,或改变 系统注册。
人们非常希望将一些命令和结构带入将应用程序安装到目前 的计算装置上的工作中。当每个应用程序从任何集中管理中释放出 来,所导致的混乱很容易使整个操作系统不稳定,于是计算装置本 身的运行也面临险。
第四个发展对应用程序进一步稳定推动的正确管理提出了要 求。这是指以下情况所导致的互连性方面的进展:廉价公众互联网 应用的广泛普及;永久连接固定和移动计算装置的增加使用;以及 在网络应用例如web浏览和电子邮件方面的爆炸式增长。这些变化 一起使得用户意识到计算装置的安全以及他们面对电子攻击的脆 弱性现在变成了主要问题,而不再是理论问题。尽管电子攻击的历 史已经超过了20年之久(第一个计算机病毒在很久以前1983年就 已产生),由于互连性的成长才使得这成为了严重的威胁,事实上 所有计算装置的用户都已经感到面临这种威胁。
目前的开放式操作系统可能实行各种各样的应用程序管理和 安全方案;然而,它们对于管理应用程序生命周期的问题都有相对 标准的方法。该方法是指提供非强制应用程序管理器(manager), 应用程序可用它进行登记,安装和卸载机制,这可以是或者不是应 用程序规范(specific),但通常绑定至本地可执行程序(native executable)的传统应用程序模式及其资源。
台式计算机上的Microsoft操作系统的用户将熟悉该方法,因 为Windows安装器(installer)以及第三方机构例如Install Shield 使用了该方法。期望这些应用程序能登陆到应用程序管理器,并遵 从其操作指引;如果做到这一点,那么核心服务例如控制面板 (Control Panel)将获知这些应用程序,并将提供用于卸载它们的 选项。然而,并没有强制要求这些应用程序使用该机制来安装或卸 载它们本身。
一些Linux发布程序(distribution)也使用了这种模式,比较 知名的有Red Hat Package Manager(RPM)和Debian的Advanced Packaging Tool(APT),这些发布程序管理应用程序的安装和卸载, 但没有解决可以绕过这种机制的可能性。
Symbian Limited of London提供的Sumbian OSTM操作系统的直 到版本8的所有版本,通过Symbian安装系统(Symbian Installation System(SIS))以及有关的AppInst体系,也是使用这种模式。
尽管目前的操作系统(Operating System,缩写为OS)中使用 的该应用程序管理模式就实施和维护而言较简单,但是这种模式所 涉及的问题可以归类为以下三个主要方面:
1、在应用程序生命周期的各个阶段之间缺乏交互性
这些问题都涉及各个应用程序生命周期阶段(这包括加载、执 行和结束以及安装和卸载)之间基本缺乏交互性。
●尽管应用程序管理器管理安装和卸载,但应用程序管理器 是单独的部件,在应用程序实际执行时并不出现。应用程序生命周 期的这个部分不受到监控,这一情况意味着操作系统和其他正运行 的程序的安全性和完整性可能受到威胁。
●在某些系统(例如Windows PC)中,该问题部分地由各个 驻留的安全监控进程管理;但这些进程并不知道该安装进程,不能 检查对任何已实施安装契约所进行的动作,而有关于此,应用程序 已经宣称它可能做了。
●大多数操作系统允许任意程序以各种不同方式执行,虽然 其已有应用模式不实施网络安全,并具有基本的文件系统安全性。 这是一个严重问题,因为在此情况下,用户意识不到在可执行程序 中的恶意或有害代码(恶意软件malware)不仅威胁其本地文件, 而且在某些情况下,还威胁网络上其他计算机以及系统文件。下面 将详细讨论这些安全问题。
应用程序未运行时不会占用资源,也不会阻止另一应用程序使 用这些资源。这不一定成为问题,但是某些情况下,安全性涉及要 求为特定受信任的应用程序保留特定资源,或者将资源维护在特定 状态。尽管某些操作系统确实提供有限的功能(例如,Linux上的 inetd),但在大多数系统上,实施各个进程以维护或保留这种资源 是必须的。
当应用程序管理器不控制生命周期的特定阶段时,这使得其不 能处理以下的情况:当应用程序正在运行时要求卸载。开发者不得 不求助于野方法(kludge),例如要求用户重启他们的系统以完成应 用程序的卸载。对于本领域人员而言,对于编程或硬件设计或解决 问题而言,野方法是指笨拙或蠢笨(但至少临时有用)的方法。
2、对多应用程序模式缺乏支持
另一个问题是,尽管OS应用程序管理系统允许各种类型文件 (包括数据文件和文档)的安装和卸载,但这些系统关注于单应用 程序模式。通常,这是本地可执行程序;即,由主机操作系统直接 加载,和直接交互地加载的程序。然而,在大多数计算装置上,还 需要支持其他应用程序模式,包括通过运行应用程序而不是操作系 统加载的可执行程序,或者由其他可执行程序来处理其与操作系统 的交互的可执行程序,或者这两种都包括的可执行程序。所述这些 其他应用程序模式包括:
●解释型可执行程序(各种BASIC中出现了这种可执行程序, 包括 http://www.appforge.com所提到的用于移动装置的Visual Basic Appforge)
●中间码可执行程序(例如PASCAL p-code和Java bytecode)
●具有嵌入式宏语言的应用程序(例如Microsoft Office应用 程序,包括VBA增强语言)
●通过运行应用程序加载但之后在其内部可执行的应用程序 (例如对浏览器提供的插件)
●使用其他应用程序作为操作环境的应用程序(互联网脚本 应用程序例如在浏览器中运行的Javascript)
●需要由专用应用程序管理软件(Application Management Software,缩写为AMS)管理的应用程序(例如来自于Java的midlets 或来自于Qualcomm的BREW)
值得注意的是,以上所述并不是一份非本地可执行程序 (non-native executable)的完全列表,对于本领域技术人员来说, 显然还有其他非本地可执行程序。
现有的OS应用程序管理系统只可以部分地支持这些模式;完 全地支持这些其他应用程序模式则需要通过各个应用程序管理系 统来处理。
3、缺乏统一的安全机制
在讨论整个应用程序生命周期的各个阶段之间的交互缺陷时 已经提及该问题。
关于现有OS管理系统,尽管它们在安装时可以执行某些形式 的周界(perimeter)安全性(例如,能够通知用户未签名的应用程 序和能够对已签名应用程序证明已进行检查),但没有将周界安全 性与实时安全性统一。因此,开放操作系统(其允许其他程序由用 户或拥有者在制造后(post-manufacture)安装)允许以各种方式执 行任意程序。实时安全性的该缺陷通常留下可由对这些程序开放的 网络和文件系统安全性所访问的资源。在存在该许可的地方,这些 资源是内隐(implicit)的,并且按照每个用户,而不是每个可执行 程序来分配。因此,用户意识不到可执行程序中的恶意程序会威胁 他们的文件,网络上的其他计算机,以及某些周边系统文件。
以上描述的几个问题方面可以存在于在操作系统层次执行的 应用程序管理系统来说。然而,对于Sun Microsystems开发的Java 技术则稍有不同。
Java技术是“一个产品组合,其基于网络的量和同一软件应 该可以在各种类型系统和装置上运行的创意”(引自 http://java.sun.com/),并且2.0版的Java 2 Micro Edition(J2ME) Mobile Information Device Profile(MIDP),其提出了管理应用程序 的这种理念。
传统的应用程序一旦加载就比较自治,并且主要基于用户输入 来管理其生命周期。然而,受管理的应用程序一直处于底层操作系 统的控制之下,操作系统可以刮起或恢复其操作,或者甚至完全杀 死一个应用程序。
要求将AMS安装于计算装置上,这是J2ME MIDP 2.0的一个 特殊要求。Sun定义AMS是“装置中负责每个应用程序生命周期 (安装、激活、执行、卸载)的软件”。在 http://sun.systemnews.com/articles/56/3/ja7939中可以找到关于J2ME 中的应用程序管理的简介,其描述了四个应用程序模式。这些模式 包括:传统的无管理应用程序、由网络浏览器管理的小应用程序 (applet)、midlet、以及xlet。其中的后面两种,midlet和xlet,是 由AMS管理。
关于J2MW AMS实例在实践中实现要求的方式的例子,请见 http://www-106.ibm.com/developerworks/library/wiamspalm/?ca=dgr-I nxw03AMS,其中描述了Palm Inc of USA的PalmOSTM上的一个实 例。
可以认为,底层OS的Java AMS所产生的这些要求以及OS应 用程序管理系统对于上述的各种困难提供了部分解决方案;即:
●对于应用程序的拥有的OS层资源管理(例如推出(pull) 连接和警告),其生命周期扩展到了超过了正在运行的应用程序的 生命周期。
●对于OS层资源在应用程序安装时拥有的应用程序的实例 化。
●对于多应用程序启动方法的管理(例如用户激活、连接激 活和警告激活)。
然而,Java AMS只能够管理两种应用程序模式(midlet和xlet) 的完整生命周期。Java AMS不能处理Java applet(其必须由网络浏 览器管理)或不受管理的Java应用程序。尤其是,根本不能管理非 Java应用程序。即使是Java应用程序,如果其是在所提供的AMS 之外安装的,那么也将无法完全管理。如PalmOSTM早前所确认的, Java AMS能识别“仅由其本身所安装的MIDlet,而不包括那些由 其他方式传送到该装置上的MIDlet”。
因此,尽管在J2ME MIDP规范中描述的Java AMS系统部分地 解决了上述的一些问题,但其具有严重缺陷,其仅能管理特定类型 的J2ME受管理应用程序,另外,这些应用程序必须是通过J2ME 本身下载和安装的。对于Java是在开放OS的顶层执行的情况,该 方法显然不适用,因为该方法允许本地应用程序变成不受管理。

发明内容

因此,本发明的一个目的在于提供一种改进的解决方案,通过 集中管理至少以下内容来解决上述的问题:
●全部的应用程序生命周期(安装、加载、各种执行阶段、 结束、以及卸载)
●应用程序权能(capability)(例如,基于MIME类型)
●长寿OS层应用程序拥有的资源(例如,推出连接或计划表 时间和警告,其可关联至特定可执行程序)
●安全性。
另外,本方法不仅还能对所有类型的本地应用程序实现上述要 求,而且还能对属于其他受管理的或不受管理的子系统的应用程序 实现上述要求,其包括但不限于:Java应用程序,解释型应用程序 例如Perl或Basic脚本,以及适应驻留不同应用环境例如J2ME AMS 或Qualcomm的BREW(Binary Runtime Environment For Wireless 无线二进制运行时环境)的应用程序。这些环境对于本领域技术人 员来说应该是公知的,因此本申请文件上下文中对此不再赘述。
因此,根据本发明的第一方面,提供了一种管理计算装置上的 用户应用程序的应用程序生命周期的方法,该方法包括:提供用于 管理多种应用程序模式和多种应用程序环境的应用程序管理系统 (AMS),其中,AMS作为计算装置的操作系统内的部件来实现, 并许可操作系统控制该装置上的所有应用程序管理功能。
根据本发明的第二方面,提供了一种计算装置,用于根据第一 方面的方法来运行。
根据本发明的的三方面,提供了一种用于计算装置的操作系 统,用于使计算装置根据第一方面的方法来运行。

发明内容

附图说明
下面将参照附图描述本发明的实施例,这些实施例仅作为举 例,在附图中:
图1示出了根据本发明的应用程序管理系统(AMS)的整体结 构;以及
图2示出了图1所示的AMS的应用程序接口。

具体实施方式

下面参考常规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是对安装和运行所有类型的可执行程序具有垄断 性的操作系统服务;这使得可对整个系统执行公用的安全策略。
尽管上文参照具体实施例描述了本发明,应该明白的是,可以 进行修改,而仍然落入所附权利要求书所限定的本发明范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈