Ich bin neu bei Android und habe noch nie etwas über Metadaten gesehen oder gehört. Ich google es jedoch und suche auf YouTube danach, dass es sich im Grunde um eine Information Ihres Objekts handelt. Korrigiere mich, wenn ich falsch liege. Kann mir jemand helfen, es besser zu verstehen.
1) Was sind Metadaten?
2) Warum wird es in Android verwendet?
Es ist gut, wenn anhand eines Beispiels erklärt wird, warum Metadaten in Android verwendet werden. Ich habe sie im Aktivitäts-Metadaten-Tag des Manifests gesehen.
In Android können Sie definieren meta-data
Informationen in Ihrem AndroidManifest.xml
HIER IST DER DOCK-LINK
Sehr einfache Verwendung
Es ist im Grunde eine zusätzliche Möglichkeit, Informationen zu speichern, auf die über das gesamte Projekt hinweg zugegriffen werden kann. In diesem Fall, <meta-data>
ist außen definiert <activity>
Etikett und innen <application>
Schild.
Definition:
<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>
Lektüre:
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
String myApiKey = bundle.getString("my_test_metagadata");
Sie können eine speichern boolean
ein int
, String
oder schweben.
Es ist nützlich für Bibliotheken oder APIs
Angenommen, Sie haben eine API/LIB erstellt, die von allen verwendet werden kann. Für ein bestimmtes Verfahren benötigen Sie jedoch eine KEY
und das KEY
muss von dem Entwickler definiert werden, der Ihre API verwenden wird. Auf diese Weise können Sie nicht vorhersagen, welchen Schlüssel der Entwickler freigeben wird.
Verwenden <meta-data>
kann ein Entwickler, der Ihre API/LIB verwenden möchte, die teilen KEY
mit dir. Auf diese Weise lassen Sie Ihre API so konfiguriert, dass sie diesen SCHLÜSSEL liest und eine Ausnahme auslöst, wenn der Benutzer dies nicht definiert hat.
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.");
}
Ein klassisches Beispiel ist Google Ads (Admob).
Sie müssen folgende Zeile zu Ihrer hinzufügen 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" />
Dies wird geladen com.google.android.gms.version
mit Wert dargestellt durch @integer/google_play_services_version
. Dann wird dies wahrscheinlich von Google Play Services (Admob) gelesen Metadaten und es kann die Version des Google Play-Dienstes ermitteln, die Sie beim Erstellen Ihrer App verwendet haben.
Ein anderes Beispiel
Eine andere Verwendung für <meta-data>
ist, wann sie zum Konfigurieren einer Aktivität verwendet werden. Auf diese Weise können Sie wertvolle Informationen über Ihre Aktivität an Android weitergeben, und Android kann Ihre Aktivität dann ordnungsgemäß verarbeiten. In diesem Fall ist die <meta-data>
-Tag wird innerhalb der hinzugefügt <activity>
Schild.
Das erste Beispiel, das ich sehe, ist, wenn Sie eine Suchaktivität definieren.
<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>
Verwenden Sie dann Folgendes, um die Metadaten aus dem Aktivitäts-Tag abzurufen:
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());
}
Lassen Sie mich ein einfaches Beispiel geben. Es hilft beim Auffinden zusätzlicher Informationen – ist die grundlegende Erklärung von Metadaten.
317-745-4618
Wenn ich die Metadaten hinzufüge, dass es sich um eine Telefonnummer handelt, wissen Sie oder können daraus das geografische Gebiet ermitteln. Wenn ich nicht angegeben habe, dass es sich um eine Telefonnummer handelt, verfügen Sie nicht über genügend Metadaten, um zu wissen, um welches Objekt es sich handelt. Es könnte eine US-SSN oder etwas anderes sein.
Es wird in Android verwendet, um Objekte zum Manifest hinzuzufügen. Wenn Sie beispielsweise Google Service verwenden, würde man es hinzufügen, um die Google Services-Version anzugeben, an die die App gebunden ist.
Metadaten sind Daten, die andere Daten beschreiben, um andere Anwendungen darüber zu informieren, wie die Daten selbst zu verwenden sind.
Android-Nutzung:
Absichten sind ein gutes Beispiel dafür – Wenn Sie Daten in Absichten übergeben möchten, müssen diese primitiv sein, da Android nur vorgefertigte Metadaten über diese Art von Objekten hat. (String und Integer haben unterschiedliche Binärstrukturen, mit denen das System arbeiten kann).
Absichten ermöglichen es Ihnen auch, Ihre eigenen Metadaten zu Ihren benutzerdefinierten Objekten über die zu erstellen Paket class (dieser Prozess zum manuellen Erstellen eigener Metadaten wird als Rangieren)
Sie werden nur zum Speichern der Daten im Schlüssel-Wert-Paar verwendet, das von der übergeordneten Komponente aufgerufen werden kann. So viel Wissen ist Ruhe genug, der Erkundung sind keine Grenzen gesetzt.
– cammando
15. Dezember 2016 um 14:53 Uhr