当前位置: 代码迷 >> Android >> Android插件式开发(1)
  详细解决方案

Android插件式开发(1)

热度:77   发布时间:2016-05-01 12:26:54.0
Android插件式开发(一)

?

1.插件式开发基础

?

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

?

2.插件是开发的构想

?

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

?

?

List<PackageInfo> pkgs = pm				.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

?

?

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

?

?

PackageManager pm = contxt.getPackageManager();res = pm.getResourcesForApplication(packageName);

?

?

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

?

?

/* Resources res */res.getIdentifier(resName, resType, packageName)
?

?

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

?

代码片段A:AndroidManifest.xml

?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.iClient"    android:installLocation="auto"    android:sharedUserId="com.iClient.Main"    android:sharedUserLabel="@string/share_user_label"    android:versionCode="1"    android:versionName="1.0" >     <uses-sdk        android:minSdkVersion="11"        android:targetSdkVersion="15" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:process="com.iClient"        android:theme="@style/AppTheme"        android:name=".data.ClientApplication" >        <activity            android:name=".MainActivity"            android:label="@string/title_activity_main"            android:process="com.iClient" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>                  .........................................................     </application>    </manifest>

?

?

代码片段B:AndroidManifest.xml

?

?<manifest xmlns:android="http://schemas.android.com/apk/res/android"        package="com.iClient.agricultrue"    android:sharedUserId="com.iClient.Main"    android:sharedUserLabel="@string/share_user_label"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="15" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity android:name=".MainActivity" />     ..........................................................    </application></manifest>

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

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

?

1 楼 xingzhe321655 2012-11-04  
这个思路不错,但是每安装一个插件就会弹出对话框,提示用户有新的程序安装,体验不好,请问有什么解决办法没有
  相关解决方案