2011-10-28 4 views
33

マニフェストファイルにカスタム属性/プロパティを追加し、実行時にそれを読み取ることができます。私はこれを行いたいので、これらのマニフェストプロパティを使ってアプリケーションの動作をカスタマイズすることができます。これはどうすればできますか?ユーザ定義のプロパティ/値をAndroidマニフェストファイルにどのように追加しますか?

答えて

63

AndroidManifest.xmlファイルにメタデータを追加し、それをアプリケーションで読み取ることができます。

<meta-data android:value="bar" android:name="foo"></meta-data> 

そしてそうのようなデータを読み込む:

はそうのようなデータを書く

ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); 
Object value = (Object)ai.metaData.get("foo"); 

http://developer.android.com/guide/topics/manifest/meta-data-element.html

+1

ここでの呼び出しは完全に機能します。他のユーザーがこの問題に遭遇した場合は、try/catch PackageManager.NameNotFoundExceptionでラップしたいと思うという点が挙げられます(特にAndroid Studioでは、これをラップしなくてもコンパイルできません)。 –

8

res/valuesに空のリソースファイルを作成し、文字列とアイテム(boolまたは整数値用)を追加することができます。

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="foo">bar</string"> 
    <item name="testint" type="integer">33</item> 
    <item name="testbool" type="bool">true</item> 
</resources> 

また、プロパティを最終的な静的変数として定義するConstantsオブジェクトを使用することもできます。

+1

感謝を参照してください、あなたはの値を読み取るために必要なコードを示してくださいますリソースファイル – inor

+4

のfooは、 である必要があります。getResources()。getString(R.string.foo) getResources()。getInteger(R.integer.test int) getResources.getBoolean(R.bool.testbool) 詳しくは、http://developer.android.com/guide/topics/resources/more-resources.htmlを参照してください。 – nanoquack

+0

アイデアのように、任意のパーサー – fifth

関連する問題