本客服平台由提供产品服务

如何获取本地插件和云端托管插件

Apkplug-客服支持小芳 发表于 2016年08月16日 13:56

获取插件


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 获取云端插件信息


插件信息获取接口为:

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结构参考附录

具体调用代码:

            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);
                }
            });


回复

您需要登录后才可以回复