AndroidManifestファイルのメタデータデータを読み取ります

メタデータタグをAndroidManifest.xmlに追加して、アプリで読み取ることができるいくつかの構成データを定義できます。
メタデータタグは、キーと値のペアのセット、つまり名前と値を定義します。メタデータはデータ型の属性を定義しませんが、実際にはメタデータデータにはデータ型があり、この型は値データから自動的に導出されます。一般的に使用される型は次のとおりです。純粋な数値はint型に属し、数字以外の文字はString型に属し、文字列がtrueまたはfalseの場合、ブール型に属します。

例は次のとおりです
。AndroidManifest.xmlで定義されています

<application>
<meta-data
    android:name="test_int"
    android:value="2147483647" />
<meta-data
    android:name="test_string"
    android:value="abcdefg" />
<meta-data
    android:name="test_boolean"
    android:value="true" />
</application>

Javaでの分析:

private void getMeta() {
    try {
        ApplicationInfo appInfo = context.getPackageManager()
                .getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
        int testInt = appInfo.metaData.getInt("test_int");
        String testString = appInfo.metaData.getString("test_string", "");
        boolean testBoolean = appInfo.metaData.getBoolean("test_boolean", false);
        Log.d(TAG, "getMeta testInt=" + testInt + ",testString=" + testString + ",testBoolean=" + testBoolean);
    } catch (Exception x) {
        Log.e(TAG, "getMeta error=" + x);
    }
}

注:
1。メタデータデータにはデータ型があります。正しいデータ型に従ってデータがフェッチされない場合、期待されるデータは取得されません。
2.一部のデータ型のデータを定義するときは、データの値の範囲に特別な注意を払う必要があります。たとえば、int型の最大値は2 ^ 31-1、つまり2147483647です。定義されたデータがこの値より大きい場合、期待されるデータは取得されません。値の範囲を超えるデータを取得するにはどうすればよいですか?1つの方法は、プレフィックス文字列を追加して文字列型に変換し、解析中に文字列型に従って読み取り、プレフィックスを削除して期待されるデータを取得することです。
3.ブールデータを定義する場合、大文字と小文字を区別せずに値データを定義できます。たとえば、true、True、TRUE、false、False、およびFALSEはすべて正しく解析できます。
4.メタデータデータは、AndroidManifest.xmlの<application>、<activity>、<activity-alias>、<service>、<receiver>、<provider>タグで定義できます。この記事の例は、ラベルで最も一般的に使用される<application>。もちろん、状況ごとの分析方法は異なりますので、ここでは詳しく紹介しません。

おすすめ

転載: blog.csdn.net/chenzhengfeng/article/details/110093807