配置文件说明

配置文件介绍

每一个插件都必须有一个配置文件,用以声明此插件的版本号和实现的组件。

我们约定这个配置文件的名称为addon_config.xml,这个文件必须存放在asset/addon目录下,不然浏览器无法检测到这个配置文件。

addon_config.xml类似于Android的AndroidManifest.xml, 使用XML的格式声明组件。
它有3个主要的标签,分别是addon、extension和event-receiver。

addon标签用以声明此插件的名称和版本信息。

extension标签用以声明插件实现的Extension组件,类似于Android的activity标签。

event-receiver标签用以声明插件实现的Event Receiver组件,类似于Android的receiver标签。

配置文件简单示例

下面是一个简单的配置文件示例:

<?xml version="1.0" encoding="utf-8"?>
<addon name="WebViewAddon" icon="ic_lancher.png"  minSdkVersion="1.0" >

     <uses-permission name="addon.permission.TOAST" />
     <uses-permission name="addon.permission.EVENT_RECEIVER" />
     ...
     <extension  name="com.example.demo.MyExtension"
            description="new tab"
            location="AddonBar"
            icon="ic_lancher.png"
      >

     </extension>
     ...
    <event-receiver name="com.example.demo.CameraReceiver"
                description="camera"
                icon="ic_lancher.png">
       <intent-filter>
            <action name="addon.action.CAMERA_EVENT" />
       </intent-filter>
    </event-receiver>
</addon>

配置项说明

addon标签

addon标签有4个属性,它们的字段和作用如下所示:

字段 解释 备注
name 插件名称 显示在插件管理面板中
icon 插件图标路径 相对于assets目录
description 插件描述 显示在插件管理面板中
minSdkVersion 插件要求最低版本SDK

例如,一个名为 Sample,版本号为1.0,并自定义了icon的插件配置如下所示:

 <addon name="Sample" icon="ic_lancher.png"  minSdkVersion="1.0" >
 ...

icon字段是可选的,如果没有此字段或此字段所指的图片不存在,则使用插件所在App的icon。需要注意的是:icon路径是相对于asset目录的。在例子中,asset目录下存放着一张名为myicon.png的图片。

minSdkVersion是一个可选字段。它的值应该是不大于当前插件所使用的SDK的版本。之所以会有这个字段,是考虑这样一种情况:拥有高版本的SDK的插件运行在仅支持低版本SDK的浏览器上,在默认的情况下,插件是不能被运行的,但如果插件配置指定了minSdkVersion的值等于或低于浏览所支持的SDK的低本,那么此插件则可以在浏览器中运行。

description是对插件的详情说明,说明正文可以用”\n"代表换行。如果不配置这个标签,将会在插件详情处显示Description字段配置的信息。

extension标签

extension标签是addon的子标签,用以声明插件所实现的Extension组件。其属性的作用如下所示:

字段 解释 备注
name Extension组件的类名 必须是全路径
description Extension的描述(名称) 在浏览器(如插件面板中显示)
location 在浏览器中出现的位置 是一个枚举值,Demo现在只支持AddonBar
icon Extension的图标 相对于assets的路径

例如,一个显示在AddonBar,实现类为ExtensionShowToast的Extension的声明如下:

<addon name="WebViewAddon" icon="ic_lancher.png"  minSdkVersion="1.0" >
     ...
     <extension  name="com.example.demo.MyExtension"
            description="Show Toast"
            location="AddonBar"
            icon="ic_lancher.png">

     </extension>
     ...
</addon>

event-receiver标签

event-receiver标签是addon的子标签,用以声明插件所实现的Event Receiver组件。它的各字段和属性说明如下:

字段 解释 备注
name 类名 必须是全名(包括报名)
description 描述 当需要从多个Event Receiver选择一个时,会显示它们的图标和描述供用户选择
icon 图标
intent-filter 声明所监听的事件

event-receiver标签与addon标签的不同之处在于,它有intene-filter子标签。intent-filter子标签是用来声明event-receiver监听的事件类型的。intent-filter的子标签与AndroidManifest中的intent-filter类似,不同的是event-receiver的intent-filter标签的属性不用加android 前缀名。但event-receiver的intent-filter各个子标签的用途与Android的是有所区别。

intent-filter各子标签的作用如下所示:

字段 用途
action 定义监听的具体事件的模块,如TAB,DOWNLOAD事件模块等等
category 定义具体模块下的具体事件类型。如果模块内划分了具体模块,那在监听这个时间模块的时候,必须通过category来定义需要监听的具体事件。
data 用以过滤数据

需要注意的是:data标签的意义因action的不同而不同。如action指定为VIEW_FILE模块时,data用以过滤所需要打开文件的类型,只有当当前需要打开文件的类型适合data所声明的形式时,Event Receiver才会收到事件。对于一个intent-filter来说,action有且只有一个。

所有action的值都以addon.action开头,所有category的值都以addon.category开头。在intent-filter中,可以声明多个category。现在支持的action与category的值请参考EVENT说明

例如,一个监听分享事件的Event Receiver在配置文件的声明如下所示:

 <event-receiver name="com.uc.browser.addon.sample.TabRemovedReceiver"
              description="Tab Removed Receiver"
              icon="addon/icon.png">
     <intent-filter>
         <action name="addon.action.TAB_EVENT"/>
         <category name="addon.category.TAB_REMOVE"/>
     </intent-filter>
</event-receiver>

uses-permission标签

Uses-permission标签,即权限声明。现在需要声明权限的地方:

  • 1.调用的API,所有API都必须进行相应的权限声明,否则调用失败
  • 2.addon_config.xml的event-receiver,也需要相应的权限声明

例如:

...
<uses-permission name="addon.permission.SELECTION_TEXT" />
<uses-permission name="addon.permission.MEMORY" />
<uses-permission name="addon.permission.SCREENSHOT" />
<uses-permission name="addon.permission.FAVICON" />
<uses-permission name="addon.permission.BOOKMARKS" />
<uses-permission name="addon.permission.HISTORY" />
...

这里声明了多个相应的权限。当前所有权限列表及说明请参考:插件权限说明

后续