10

AndroidManifest.xmlメタデータとして保存されているファイルから値を取得する必要があります。

<meta-data android:value="3" android:name="myInterestingValue" />

メソッドでは、次のonCreateメソッドを呼び出します。

private Object getMetaData(String name) {
    try {
        ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
        Bundle metaData = ai.metaData; 
        if(metaData == null) {
            debug("metaData is null. Unable to get meta data for " + name);
        }
        else {
            Object value = (Object)metaData.get(name);
            return value;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

しかし、metaDataは常に null です。metaDataメソッドでにアクセスすることはできませonCreateんか? つまり、アクティビティがまだ完全に初期化されていません。

4

3 に答える 3

25

GET_ACTIVITIESフラグとを使用する必要がありますGET_META_DATA

ActivityInfo ai = getPackageManager()
        .getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
于 2011-11-10T04:18:36.587 に答える
1

jasonj の答えを試しましたが、うまくいきません。マニフェスト ファイルからメタデータを取得するには、次のコードを取得する必要があります

ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;

または Kotlin バージョン:

val ai = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
val bundel = ai?.metaData 
于 2014-08-01T09:03:38.060 に答える
1

android-metadataは、Android マニフェストからメタデータを簡単に取得できるフレームワークです。android-metadataを使用して上記のメタデータを取得する方法は次のとおりです。

int val = ManifestMetadata.get (context).getValue ("myInterestingValue", Integer.class);

完全な開示: 私は android-metadata の作成者です。

于 2014-03-12T19:17:10.013 に答える