studio programacion móviles etiquetas ejemplos desarrollo curso aplicaciones android android-activity android-manifest metadata

programacion - ¿Qué son los metadatos? Y de qué sirve en Android



meta tags generator (3)

Soy nuevo en Android y no he visto ni escuchado sobre metadatos antes. Sin embargo, googleé y buscaré en YouTube que básicamente es una información de tu objeto. Corrígeme si estoy equivocado. ¿Alguien puede ayudarme a entenderlo de una mejor manera?

1) ¿Qué es metadatos?

2) ¿Por qué se usa en Android?

Será bueno si se proporciona una explicación con ejemplos de por qué los metadatos se usan en Android. Los he visto dentro de la etiqueta de metadatos de actividad de manifiesto.


Los metadatos son datos que describen otros datos para informar a otras aplicaciones cómo usar los datos en sí.

Uso de Android:
Las intenciones son un gran ejemplo para eso: si quieres pasar datos en intentos, tiene que ser primitivo porque Android solo tiene metadatos previos a la compilación sobre ese tipo de objetos. (La cadena y el entero tienen una estructura binaria diferente con la que el sistema sabe cómo trabajar).

Los intentos también le permiten crear sus propios metadatos a sus objetos personalizados a través de la clase Parcel (este proceso de creación manual de su propio metada llamado marshalling )


Déjame dar un ejemplo simple. Ayuda a encontrar información adicional: es la explicación básica de los metadatos.

317-745-4618

Si agrego los metadatos de que es un número de teléfono que conoces o puedo deducir el área geográfica de esto. Si no dije que es un número de teléfono, entonces no tienes suficientes metadatos para saber qué objeto es este. Podría ser un SSN de EE. UU. O puede ser algo más.

Se usa en Android para agregar objetos al manifiesto, por ejemplo, si usa el servicio de Google, uno lo agregará para designar la versión de servicios de Google a la que se une la aplicación.


En Android, puede definir meta-data metadatos en su AndroidManifest.xml

AQUÍ ESTÁ EL ENLACE DOCK

Uso muy básico

Básicamente es una opción adicional para almacenar información a la que se puede acceder a través de todo el proyecto. En este caso, <meta-data> se define fuera de la etiqueta <activity> y dentro de la etiqueta <application> .

Definiendo:

<manifest> <application android:icon="@drawable/icon" android:label="@string/app_name"> <meta-data android:name="my_test_metagadata" android:value="testValue" /> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <manifest>

Leyendo:

ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; String myApiKey = bundle.getString("my_test_metagadata");

Puede guardar un boolean , un int , String o float.

Es útil para bibliotecas o API

Digamos que creó una API / LIB que se puede usar para todos. Sin embargo, para un procedimiento específico, necesita una KEY y esa KEY debe ser definida por el desarrollador que usará su API. De esta forma, no puede predecir qué clave compartirá el desarrollador.

Usando <meta-data> , un desarrollador que quiera usar su API / LIB puede compartir la KEY con usted. De esta forma, deja su API configurada para leer esa CLAVE y generar una excepción si el usuario no definió.

try { ApplicationInfo ai = getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; String myApiKey = bundle.getString("my_test_metagadata"); } catch (Exception e) { Log.e(TAG, "Dear developer. Don''t forget to configure <meta-data android:name=/"my_test_metagadata/" android:value=/"testValue/"/> in your AndroidManifest.xml file."); }

Un ejemplo clásico es Google Ads (Admob).

Debe agregar la siguiente línea a su AndroidManifest :

<!--This meta-data tag is required to use Google Play Services. (adMob)--> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Esto cargará com.google.android.gms.version con el valor representado por @integer/google_play_services_version . Entonces, probablemente, Google Play Services (Admob) leerá estos metadatos y podrá determinar la versión del servicio de Google Play que usó cuando construyó su aplicación.

Otro ejemplo

Otro uso de <meta-data> es cuándo usarlos para configurar una actividad. De esta forma, puede pasar información valiosa a Android sobre su actividad, y luego Android puede manejar su actividad correctamente. En este caso, la etiqueta <meta-data> se agrega dentro de la etiqueta <activity> .

El primer ejemplo que veo es cuando defines una actividad de búsqueda.

<manifest> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SearchableActivity" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity> </application> <manifest>

Luego, para obtener los metadatos de la etiqueta de actividad, usa esto:

try { ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; if (bundle != null) { String apiKey = bundle.getString("apikey"); Log.d(this.getClass().getSimpleName(), "apiKey = " + apiKey); } } } catch (PackageManager.NameNotFoundException e) { Utilities.log(this.getClass().getSimpleName(), "Failed to load meta-data, NameNotFound: " + e.getMessage()); } catch (NullPointerException e) { Log.e(this.getClass().getSimpleName(), "Failed to load meta-data, NullPointer: " + e.getMessage()); }