apklug插件托管服务开发教程之下载插件-02

心已入冬 提交于 2019-12-04 06:21:38

    结合上节<按条件查询宿主中的插件>,本节下载并按照云端的插件。

实现项目demo http://git.oschina.net/plug/ApkplugCloudServiceDemo

实现代码 :com.apkplugdemo.adapter.SearchBundleAdapter

一,插件下载安装服务

    插件下载安装服务也是以OSGI服务形式提供的,获取服务的模板代码为:       

//查询插件下载服务  因为该服务在框架启动时启动,所以肯定存在
ServiceReference reference=context.getServiceReference(AppDownload.class.getName());
if(null!=reference){
    	service=(AppDownload) context.getService(reference);
}
context.ungetService(reference);

二,AppDownload服务接口说明  

public interface AppDownload {
	/**
	 * 插件托管服务接口
	 * @param appBean ab    包含插件基本信息
	 * @param mContext      android上下文
	 * @param callback      服务回调接口
	 * @throws IOException
	 */
	public void download(appBean ab,Context mContext,AppDownloadCallBack callback)throws IOException;
}

三,调用插件安装服务接口下载插件

    1)首先应该获取appBean 目前有两种方式可以获取到

        1.通过插件搜索服务           即上一节提到的

        2.通过插件版本状态服务    

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!