结合上节<按条件查询宿主中的插件>,本节下载并按照云端的插件。 java
实现项目demo http://git.oschina.net/plug/ApkplugCloudServiceDemo android
实现代码 :com.apkplugdemo.adapter.SearchBundleAdapter git
一,插件下载安装服务 app
插件下载安装服务也是以OSGI服务形式提供的,获取服务的模板代码为: 框架
//查询插件下载服务 由于该服务在框架启动时启动,因此确定存在 ServiceReference reference=context.getServiceReference(AppDownload.class.getName()); if(null!=reference){ service=(AppDownload) context.getService(reference); } context.ungetService(reference);
二,AppDownload服务接口说明 url
public interface AppDownload { /** * 插件托管服务接口 * @param appBean ab 包含插件基本信息 * @param mContext android上下文 * @param callback 服务回调接口 * @throws IOException */ public void download(appBean ab,Context mContext,AppDownloadCallBack callback)throws IOException; }
三,调用插件安装服务接口下载插件 spa
1)首先应该获取appBean 目前有两种方式能够获取到 .net
1.经过插件搜索服务 即上一节提到的 插件
2.经过插件版本状态服务 code
2)编写回调接口AppDownloadCallBack
public interface AppDownloadCallBack { /** * 安装成功 */ public final int suc_install=0; /** * 安装失败 */ public final int fail_install=-1; /** * 安装成功 */ public final int suc_download=1; /** * 下载失败 */ public final int fail_download=-2; /** * 获取url成功 */ public final int suc_url=2; /** * 获取url失败 */ public final int fail_url=-2; /** * 插件安装成功后 * @param b */ public void onInstallSuccess(int stutas,Bundle b); public void onDownLoadSuccess(String info); /** * 插件下载中 * @param bytesWritten 已下载数据 * @param totalSize 总数据大小 * @param Speed 下载速度 * @param bean */ public void onProgress(int bytesWritten, int totalSize,String Speed); /** * 失败 * @param bean * @param errorNo * @param strMsg */ public void onFailure(int errorNo ,String strMsg); }