I need to retrieve a value from the AndroidManifest.xml
file, stored as a meta data:
<meta-data android:value="3" android:name="myInterestingValue" />
In the onCreate
method, I call the following method:
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;
}
But the metaData
is always null. Is it impossible to access the metaData
in the onCreate
method? i.e. The activity has not been fully initialized yet.
You will need to use the flags GET_ACTIVITIES
and GET_META_DATA
.
ActivityInfo ai = getPackageManager()
.getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
If you are interested, android-metadata is a framework that makes it easier to get metadata from the Android manifest. The way you would get the meta-data above using android-metadata is:
int val = ManifestMetadata.get (context).getValue ("myInterestingValue", Integer.class);
Full disclosure: I'm the creator of android-metadata.
I've tried jasonj's answer but it doesn't work. To retrieve meta-data from manifest file, I must get the following code
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
OR the Kotlin version:
val ai = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
val bundel = ai?.metaData
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With