我正在考慮有一個腳本,將分支信息作爲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文件,但是我不會指望通過安裝過程保留該名稱。
非常全面和有益的答案。關於APK名稱,我的意思是應用程序名稱。 – 2012-02-14 14:50:20
@galaxyinfinite:如果通過「應用程序名稱」來表示''上'android:name'屬性的值,那麼您當然可以更改它。最簡單的方法是將其保留爲字符串資源並更新該資源(可能位於其自己的文件中)。這樣,你不必大驚小怪'PackageManager',只需調用'getString(R.string.app_name)'(或其他)來檢索值。儘管如此,您可以創建一個* new *字符串資源並單獨保留應用程序名稱。 –
CommonsWare
2012-02-14 14:54:19
也許我是誤解,但我不相信'PackageManager'可以訪問其他應用程序的字符串。我需要能夠從應用程序外部訪問這個字符串,所以看起來你的'元數據'解決方案是最好的。 – 2012-02-14 15:05:32