技术库 > Java

android插件化-安装apkplug插件

技术库:tec.5lulu.com

1 apkplug插件

from:tec.5lulu.com

    apkplug插件是一个apk文件,它与普通的android APP基本相同(开发方式)

2 apkplug 插件安装服务

    apkplug内嵌一个OSGI服务,所以框架大部分接口都是通过OSGI服务发布的,在这里你可以不用详细了解OSGI服务的原理,一下我们将给出调用插件安装服务的模板代码。你在开发时可以直接套用。

3 BundleControl接口

    插件安装服务接口为 org.apkplug.Bundle.BundleControl

// startlevel =2  isCheckVersion=true
Bundle install(BundleContext context,String loaclFilePath,installCallback callback)
// v1.6.7 新增接口  建议使用最新的这个调用接口 
Bundle install(BundleContext context,String loaclFilePath,installCallback callback,int startlevel,boolean isCheckVersion)     

    * loaclFilePath     --- 插件apk文件的路径  格式为 "file:"+apk文件绝对路径

    * installCallback   ---插件安装的回调函数  通过它可获知插件安装状态

    * startlevel         ---插件启动级别 ,小于default_startlevel的插件会在框架启动时自起 default_startlevel=2

    * isCheckVersion ---安装时是否检测已有插件版本   true 检测版本如果已安插件版本与现有插件版本相同将不安装  false 不检测覆盖安装

4 获取BundleControl服务

    获取服务的模板代码为:

public void install(String path,installCallback callback,int startlevel,boolean isCheckVersion) throws Exception{
  System.out.println("安装 :"+path);
  BundleContext mcontext=frame.getSystemBundleContext();
ServiceReference reference=mcontext.getServiceReference(BundleControl.class.getName());
     if(null!=reference){
         BundleControl service=(BundleControl) mcontext.getService(reference);
        if(service!=null){
            service.install(mcontext, path,callback, startlevel,isCheckVersion);
        }
        mcontext.ungetService(reference);
    }
}

调用函数安装插件

//插件启动级别为1(会自启) 并且不检查插件版本是否相同都安装
install("file:"+filepath[0],new myinstallCallback(),1,false);

5 插件卸载

Bundle.uninstall();

android插件化-安装apkplug插件


标签: android 接口 string osgi int本文链接 http://tec.5lulu.com/detail/110dcn2ehcg9w85a2.html

我来评分 :6.5
1

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com