获取插件


1 获取本地插件

通过BundleContext获取所有已安装插件 通过BundleContext获取所有已安装插件

每一个已安装插件都映射为org.osgi.framework.Bundle

apkplug初始化以后默认有一个系统插件叫SystemBundle,它永远在插件列表的第一个位置

BundleContext context =frame.getSystemBundleContext();
Bundle[] plugs = context.getBundles();
for(int i=0;i<plugs.length;i++)
{ 
//获取已安装插件 
//打印插件信息
   Bundle b = plugs[i]; 
  StringBuffer sb=new StringBuffer();
  sb.append("\n插件名称:"+b.getName());
  sb.append("\n插件应用名称:"+b.getSymbolicName());
  sb.append("\n插件版本:"+b.getVersion());
  sb.append("\n插件ID:"+b.getBundleId());
  sb.append("\n插件当前状态:"+b.getState());
  sb.append("\n插件启动Activity:"+b.getBundleActivity());
  System.out.println(sb.toString());
}

2 获取云端插件信息


此接口可以根据宿主配置的apkplug_appid,apkplug_containerid获取相应的云端插件的信息,即在后台和此宿主绑定的容器内每个插件的plugid、version等信息。

接口流程:

调用代码:

            final List<PlugInfo> infoList = new ArrayList<PlugInfo>();

            PlugManager.getInstance().getPlugInfo(new GetPlugInfoRequest(), new OnGetPlugInfoListener() {
                @Override
                public void onSuccess(List<PlugInfo> plugInfos) {
                    infoList.addAll(plugInfos);
                    showInfo(infoList);
                }

                @Override
                public void onFailure(String responseMsg) {
                    Log.d("onFailure",responseMsg);
                }
            });

接口说明:

PlugManager.getInstance().getPlugInfo(GetPlugInfoRequest request, OnGetPlugInfoListener listener)。

GetPlugInfoRequest是请求实体类,有如下属性:

    int limit        限制每页可以返回多少对象,范围为 1-100 项,默认是 10 项    [可选]
    int skip        查询起始位置 默认为0    [可选]
    boolean need_info  是否需要插件详情   true|false   默认false[可选]
    boolean need_para  是否需要自定义参数 true|false   默认false[可选] 
    boolean need_icon  是否需要插件的icon true|false   默认false[可选]
    boolean need_diff  是需要差分信息     true|false   默认false[可选]
    int gt_weight             #大于权值    [可选]
    int lt_weight           #小于权值      [可选]
    String order_weight        #DESC倒序 ACS顺序 默认ACS  [可选]
    String start_time     #大于绑定日期 用 Unix 时间戳表示 [可选]  
    String end_time       #小于绑定日期 用 Unix 时间戳表示 [可选]
    String order_time        #DESC倒序 ACS顺序 默认DESC  [可选]
    String plug_id             #插件ID [可选]
    String keywords            #关键词过滤 最多 30 个 Unicode 字符 [可选]

实体类中均有get set 方法可用。

OnPlugInfoListener是请求回调接口:

提供两个回调方法:

void onSuccess(List<PlugInfo> plugInfos);

void onFailure(String responseMsg);

onSuccess中获取插件信息列表,onFailure中获取错误信息。

PlugInfo结构参考附录

3 获取本地安装插件的更新版本信息

此接口可以查询所有本地已经安装的插件是否有更新的版本可用

接口流程:

调用代码:

            PlugManager.getInstance().checkAllLocalPlugVersion(context, new OnCheckVersionListener() {
                @Override
                public void onSuccess(List<PlugInfo> infoList) {
                    infoList.addAll(infoList);
                    showInfo(infoList);
                }

                @Override
                public void onFailure(String responseMsg) {
                    Log.d("onFailure", responseMsg);
                }
            });

接口说明:

查询所有本地已经安装插件的更新信息的接口:

public void checkAllLocalPlugVersion(Context context,final OnCheckVersionListener listener)

OnCheckVersionListener 为请求回调接口,提供两个回调方法:

void onSuccess(List<PlugInfo> infoList);

void onFailure(String responseMsg);

onSuccess中返回云端最新版本插件列表信息,onFailure中返回错误信息。

PlugInfo结构参考附录