結合上節<按條件查詢宿主中的插件>,本節下載並按照雲端的插件。 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); }