Android外掛式開發(一)

iteye_2973發表於2012-08-30

 

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應用的資源和資料。

以上功能經過驗證後發現,設想完全可以實現,外掛式開發設想成立。

 

相關文章