zoukankan      html  css  js  c++  java
  • 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应用的资源和数据。

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

  • 相关阅读:
    CC
    codeforces 984 E. Elevator
    codeforces 984 D. XOR-pyramid
    codeforces 984 C. Finite or not?
    codeforces 984 B. Minesweeper
    codeforces 984 A. Game
    Loj #6000. 「网络流 24 题」搭配飞行员
    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest 训练报告
    省赛训练 分块9题
    AC自动机 hdu 2222 Keywords Search
  • 原文地址:https://www.cnblogs.com/taoboy/p/5287017.html
Copyright © 2011-2022 走看看