- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
开发BREW扩展类
看到一篇文章,觉得比较有指导意义,译过来,希望给大家有些帮助,能力有限,有错误的地方还望大家指出来。共同学习,共同进步。
原文地址:/bws/content/gi/common/appseng/en/knowledgebase/docs/extensions.htm
1 简介:扩展类可以扩充BREW的功能,通常来说,扩展类都是以动态的形式存在并且以OTA方式提供下载,然而在某些情况下,OEM制造商会在他们的设备中添加了一些静态的扩展类,例如:OEM制造商经常会给BREW标准接口类IAddrBook添加许多额外的功能,他们通常会创建自己的IAddrBook接口,并且把新增的额外功能提供给开发者。
2 静态 VS 动态静态扩展类通常是被包含在OEM制造商的SW版本中,不由第三方开发者提供。从另外一个角度看来,动态扩展则是由OTA方式下载。移动应用和它所需要的扩展类是同时被下载到手机上的(除非手机上已经存在了所需的扩展类),通过MIF文件提供的依存列表信息把所需要的扩展类下载到手机当中。每一个动态扩展都会有一个相关联的引用计数,该引用计数负责监视手机上所有应用对于该扩展类的依赖关系,如果引用计数减少到0,则该扩展类将被从手机内存中移除。静态扩展则不是,它没有引用计数,也永远不会被从手机上删除。
3 特性扩展类不包含权限设置,它的权限级别继承于父应用,例如:如果某应用使用了一个具有文件操作功能的扩展类,那么该应用就是扩展类的父应用,除非父应用的MIF文件中设置了允许文件操作的权限,否则该扩展类的所有文件操作都会失败,这一点对于扩展来开发人员来说十分重要。与权限级别相似的是,扩展类中所有对于文件的操作都是通过父应用的上下文来执行的,如此来看,对于父应用不可见的文件,扩展类也是无法操作的。扩展类即可以是保护类型也可以是未保护类型。对于保护类型来说,如果父应用的MIF文件中的依存关系列表中有显示罗列出该扩展类,那么父应用就可以创建并使用它,反之,则不行;对于非保护类型则可以被所有应用使用,不用考虑该应用是否明确声明了依存关系,这样的扩展类通常被加上一个MIME类型的标记,应用只需要通过外壳查找目标MIME类型的句柄,就可以使用它的功能了。
4 MIF文件扩展类和应用一样需要MIF文件,然而,他们却在根本上有所不同。首先,一个扩展类的MIF文件不需要定义一个applet,只需要在MIF编辑器的Externsions标签栏中的Exported Classes中设置其class ID即可。保护类型的属性也在该标签栏中设置。如果一个应用的运行以来与一个扩展类,那么在该应用的MIF文件中必须把扩展类的class ID设置为依赖,如果没有此类依赖关系,该扩展类将不会在下载应用的时候被一同下载,当该应用运行的时候就会失败。如果扩展类是可选的,就可以不用添加依存关系,然而应用必须能够处理扩展类不存在的情况。
5 声明扩展类的结构体第一步,开发扩展类首先需要声明虚函数表。typedef struct IDemoExtension IDemoExtension;AEEINTERFACE(IDemoExtension){??????? INHERIT_IQueryInterface(IDemoExtension);??????? int (*DisplayTime)(IDemoExtension *po);??????? int (*DisplayDate)(IDemoExtension *po);};
第一行声明了一个IDemoExtension的结构体,该结构体是一个apple结构体,将会返回给正在初始化的应用,其中的宏AEEINTERFACE声明了一个扩展类的虚函数表,从上面的声明看出,虚函数表中有5个函数。BREW的每一个接口类都定义了一个类似于上面定义中的宏INHERIT_XXX,用它来把已继承的函数添加到已存在的函数表中,至少,BREW强烈推荐如上例所示,从IQueryInterface派生而来。宏INHERIT_IQueryInterface添加三个函数到函数表中:AddRef, Release, QueryInterface。我们的例子中添加了DisplayTime和DisplayData两个函数。下一步我们定义宏来索引我们函数表中的函数#define IDEMOEXTENSION_AddRef(p) ?AEEGETPVTBL((p),IExtensionCls)-AddRef((p))#define IDEMOEXTENSION_Release(p)??? AEEGETPVTBL((p),IExtensionCls)-Release((p))#define IDEMOEXTENSION_
您可能关注的文档
最近下载
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘笔试模拟试题及答案解析.docx VIP
- 人体结构与功能教案仅供参考.pptx VIP
- 物探报告范例.pdf VIP
- 三级养老护理员国家职业技能培训模块一项目三任务三协助老年人进行口腔吸痰.pptx VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘考试备考题库及答案解析.docx VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘笔试备考试题及答案解析.docx VIP
- 完整版2025年开学思政第一课.ppt VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘考试备考试题及答案解析.docx VIP
- 写作载体与写作受体.ppt VIP
- 电子科技大学博士、硕士学位授权点一览表最终.docx VIP
文档评论(0)