Según lo que reúno, los metadatos son esencialmente una forma de acceder a las propiedades. El siguiente link proporciona un ejemplo con una breve explicación:
Este campo se puede utilizar para almacenar booleanos, flotantes, int o String y posteriormente se accede mediante el método Bundle para su tipo de datos (por ejemplo, getInt()) . Aquí está un ejemplo de cómo definir un valor en su AndroidManifest.xml:
<xml>
...
<meta-data android:name="my_api_key" android:value="mykey123" />
...
</xml>
El ApplicationInfo regresado contiene un campo, los metadatos, que en realidad es un paquete que contiene todos los metadatos. La línea 4 obtiene una cadena que es igual que el parámetro "android: name" en el XML.
ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
String myApiKey = bundle.getString("my_api_key");