Androidマニフェストファイルにユーザ定義のプロパティ/値をどのように追加しますか?

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

33

2 答え

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

次のようにデータを書きます:

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

そして、次のようにデータを読んでください:

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

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

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

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

<?xml version="1.0" encoding="utf-8"?>

    bar
    33
    true

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

8
追加された
アイデアのように、パーサなしで簡単に価値を得る
追加された 著者 fifth,
おかげで、リソースファイルからfooの値を読み取るために必要なコードを表示してください
追加された 著者 inor,
はいこれは代替ですが、values-en、values-jpなどの複数の値のフォルダがある場合は、すべてのstrings.xmlファイルに定数を定義する必要があります。複数のファイルに同じデータがある場合、これは多くの点で不利になると私は思う。
追加された 著者 Burak Öztürk,
getResources()。getString(R.string.foo)getResources()。getInteger(R.integer.testint)getResources.getBoolean(R.bool.testbool) developer.android.com/guide/topics/resources/&hellip をご覧ください。
追加された 著者 nanoquack,