本節咱們將練習怎樣安裝(更新)一個插件。本文章基於v1.6.7版本進行說明,最新的方式以官網爲準 java
可下載最新的apkplugdemo源碼http://git.oschina.net/plug/apkplugDemos android
一 apkplug插件 git
apkplug插件是一個apk文件,它與普通的android APP基本相同(開發方式),本節只講插件安裝接口而插件開發將在後面的章節詳細講解 框架
二 apkplug 插件安裝服務 函數
apkplug內嵌一個OSGI服務,因此框架大部分接口都是經過OSGI服務發佈的,在這裏你能夠不用詳細瞭解OSGI服務的原理,一下咱們將給出調用插件安裝服務的模板代碼。你在開發時能夠直接套用。 spa
三 BundleControl接口 .net
插件安裝服務接口爲 org.apkplug.Bundle.BundleControl 插件
// startlevel =2 isCheckVersion=true code
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 不檢測覆蓋安裝
四 獲取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);
五 插件卸載
Bundle.uninstall();
QQ交流羣:132433459