fotos Was sind Metadaten? Und was nutzt es in android




metadaten website (3)

Ich bin neu bei Android und habe noch nie zuvor von Metadaten gehört oder gehört. Allerdings google ich es und suche auf YouTube nach, dass es sich im Grunde genommen um eine Information über Ihr Objekt 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 wird gut sein, wenn ein Beispiel dafür angegeben wird, warum Metadaten in Android verwendet werden. Ich habe sie im Manifest-Aktivitäts-Metadaten-Tag gesehen.


In Android können Sie meta-data in Ihrer AndroidManifest.xml

Hier ist der Dock Link

Sehr einfache Nutzung

Es ist im Grunde eine zusätzliche Option zum Speichern von Informationen, auf die über das gesamte Projekt zugegriffen werden kann. In diesem Fall werden <meta-data> außerhalb des <activity> -Tags und innerhalb des <application> -Tags definiert.

Definieren:

<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>

Lesen:

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

Sie können einen boolean , einen int , String oder float speichern.

Es ist nützlich für Bibliotheken oder APIs

Angenommen, Sie haben eine API / LIB erstellt, die für alle Benutzer verwendet werden kann. Für ein bestimmtes Verfahren benötigen Sie jedoch einen KEY und dieser KEY muss vom Entwickler definiert werden, der Ihre API verwendet. Auf diese Weise können Sie nicht vorhersagen, welchen Schlüssel der Entwickler freigeben soll.

Mit <meta-data> kann ein Entwickler, der Ihre API / LIB verwenden möchte, den KEY mit Ihnen teilen. Auf diese Weise lassen Sie Ihre API so konfiguriert, dass sie diesen KEY liest und eine Ausnahme auslöst, wenn der Benutzer sie 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 Ihrem 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" />

Dadurch wird com.google.android.gms.version mit dem Wert von @integer/google_play_services_version . Dann wird Google Play Services (Admob) wahrscheinlich diese Metadaten lesen und die Version des Google Play-Dienstes ermitteln können, die Sie beim Erstellen Ihrer App verwendet haben.

Ein anderes Beispiel

Eine weitere Verwendung von <meta-data> besteht darin, wann sie verwendet werden sollen, um eine Aktivität zu konfigurieren. Auf diese Weise können Sie wertvolle Informationen an Android zu Ihrer Aktivität weitergeben, und dann kann Android Ihre Aktivität ordnungsgemäß verarbeiten. In diesem Fall wird das <meta-data> -Tag innerhalb des <activity> -Tags hinzugefügt.

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());
    }

Metadaten sind Daten, die andere Daten beschreiben, um andere Anwendungen darüber zu informieren, wie sie die Daten selbst verwenden.

Android-Nutzung:
Intents sind ein gutes Beispiel dafür - Wenn Sie Daten in Intents übergeben möchten, müssen sie primitiv sein, da Android nur Metadaten zu diesen Objekten vorkompiliert hat. (String und Integer haben unterschiedliche Binärstrukturen, mit denen das System arbeiten kann).

Mit Intents können Sie auch eigene Metadaten für Ihre benutzerdefinierten Objekte über die Parcel Klasse erstellen (dieser Prozess erstellt manuell ein eigenes Metada namens marshalling ).


Lassen Sie mich ein einfaches Beispiel geben. Es hilft bei der Suche nach zusätzlichen Informationen - ist die grundlegende Erklärung von Metadaten.

317-745-4618

Wenn ich die Metadaten hinzufüge, dass es sich um eine Telefonnummer handelt, die Sie nicht kennen, oder wenn Sie den geografischen Bereich ermitteln können. Wenn ich nicht angegeben habe, dass es eine Telefonnummer ist, dann haben Sie nicht genug Metadaten, um zu wissen, welches Objekt das ist. Es könnte ein US SSN sein oder es könnte etwas anderes sein.

Es wird in Android zum Hinzufügen von Objekten zum Manifest verwendet. Wenn beispielsweise Google Service verwendet wird, wird es hinzugefügt, um die Google Services-Version zu bestimmen, an die die App gebunden ist.





metadata