Android插件开发机制 (转)

1.插件式开发基础

插件式开发是指,只要提供一个主应用程序,此应用程序可以安装和调用其他插件式的功能模块,当应用程序需要增加功能时,不需要升级应用程序,而是通过安装新功能模块的插件即可。其单个插件的运行必须依赖于主应用程序。插件开发是单独进行的。

2.插件是开发的构想

A.通过如下代码可以获取android系统内的安装应用的列表,同时获取每个安装包的信息。

Java代码
  1. List<PackageInfo> pkgs = pm
  2.                 .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

B.通过如下代码可以获取每个包的资源

Java代码
  1. PackageManager pm = contxt.getPackageManager();
  2. res = pm.getResourcesForApplication(packageName);

C.通过如下代码可以获取资源的id

Java代码
  1. /* Resources res */
  2. res.getIdentifier(resName, resType, packageName)

 

D.但是由于android系统的安全机制继承自linux,所以对于不同运行进程的apk之间是不能够直接访问资源和数据,同时android的创始人应该有这个预测留有方法观看如下两个代码片段A和片段B:

代码片段A:AndroidManifest.xml

Xml代码  
  1. <manifest xmlns:android=”http://schemas.android.com/apk/res/android”
  2.     package=”com.iClient”
  3.     android:installLocation=”auto”
  4.     android:sharedUserId=”com.iClient.Main”
  5.     android:sharedUserLabel=”@string/share_user_label”
  6.     android:versionCode=”1″
  7.     android:versionName=”1.0″ >
  8.     <uses-sdk
  9.         android:minSdkVersion=”11″
  10.         android:targetSdkVersion=”15″ />
  11.     <application
  12.         android:icon=”@drawable/ic_launcher”
  13.         android:label=”@string/app_name”
  14.         android:process=”com.iClient”
  15.         android:theme=”@style/AppTheme”
  16.         android:name=”.data.ClientApplication” >
  17.         <activity
  18.             android:name=”.MainActivity”
  19.             android:label=”@string/title_activity_main”
  20.             android:process=”com.iClient” >
  21.             <intent-filter>
  22.                 <action android:name=”android.intent.action.MAIN” />
  23.                 <category android:name=”android.intent.category.LAUNCHER” />
  24.             </intent-filter>
  25.         </activity>
  26.                   …………………………………………………
  27.      </application>
  28.     </manifest>

 

代码片段B:AndroidManifest.xml

Xml代码  
  1.  <manifest xmlns:android=”http://schemas.android.com/apk/res/android”
  2.     package=”com.iClient.agricultrue”
  3.     android:sharedUserId=”com.iClient.Main”
  4.     android:sharedUserLabel=”@string/share_user_label”
  5.     android:versionCode=”1″
  6.     android:versionName=”1.0″ >
  7.     <uses-sdk
  8.         android:minSdkVersion=”8″
  9.         android:targetSdkVersion=”15″ />
  10.     <application
  11.         android:icon=”@drawable/ic_launcher”
  12.         android:label=”@string/app_name”
  13.         android:theme=”@style/AppTheme” >
  14.         <activity android:name=”.MainActivity” />
  15.      ………………………………………………….
  16.     </application>
  17. </manifest>

如以上2个代码段比较 android:sharedUserId=”com.iClient.Main”是共同的配置,如此可以保证A应用可以访问B应用的资源和数据。

以上功能经过验证后发现,设想完全可以实现,插件式开发设想成立。

posted on 2016-03-17 13:16  taoboy  阅读(219)  评论(0编辑  收藏  举报

导航