Android:自定义应用程序属性,可由包管理器访问?

时间:2012-02-14 14:25:36

标签: android android-package-managers

对于工作,我维持一个内部“市场”,可以上传和下载新的应用程序版本。我还维护一个启动器,可以从我们的许多应用程序中进行选择并启动它们(有些是同一个应用程序'品牌'不同)。我目前可以使用包名和版本代码填充此列表,但我还想在SVN分支中添加。

我正在考虑使用一个脚本,将分支信息作为XML添加到清单中作为自定义属性或单独的XML文件。理想情况下,这可以通过PackageManager公开访问。这可能吗?

或者,我可以通过编程方式更改APK名称吗?然后我可以使用“$ name - $ branch”作为新名称。

1 个答案:

答案 0 :(得分:2)

  

我正在考虑使用一个脚本,将分支信息作为XML添加到清单中作为自定义属性或单独的XML文件。理想情况下,这可以通过PackageManager公开访问。这可能吗?

您已将<meta-data>元素添加到组件的元素(例如<activity>)并通过PackageManager访问元数据XML内容:

    <receiver android:name="com.commonsware.cwac.wakeful.AlarmReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>

        <meta-data
            android:name="com.commonsware.cwac.wakeful"
            android:resource="@xml/wakeful"/>
    </receiver>

组件将通过以下代码访问元数据:

PackageManager pm=ctxt.getPackageManager();
ComponentName cn=new ComponentName(ctxt, getClass());
ActivityInfo ai=pm.getReceiverInfo(cn, PackageManager.GET_META_DATA);
XmlResourceParser xpp=ai.loadXmlMetaData(pm, "com.commonsware.cwac.wakeful");

然后,您的自定义构建过程可以调整<meta-data>指向的XML资源,以包含您想要的任何内容。

  

或者,我可以通过编程方式更改APK名称吗?

您可以在硬盘驱动器上为APK文件命名,但我不会指望该名称在安装过程中保持不变。