android插件化-安裝apkplug插件-04

本節咱們將練習怎樣安裝(更新)一個插件。本文章基於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();

官網www.apkplug.com

QQ交流羣:132433459 

相關文章
相關標籤/搜索