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应用的资源和数据。

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值