Подтвердить что ты не робот

Что такое метаданные? И в чем его использование в андроиде

Я новичок в android, и раньше я не видел и не слышал о метаданных. Однако я google и ищу об этом на YouTube, что это в основном информация о вашем объекте. Поправьте меня, если я ошибаюсь. Может ли кто-нибудь помочь мне лучше понять это.

1) Что такое метаданные?

2) Почему он используется в Android?

Хорошо, если объясняется пример использования метаданных в Android. Я видел их внутри ярлыка метаданных активности.

4b9b3361

Ответ 1

В Android вы можете определить meta-data информацию в AndroidManifest.xml

ЗДЕСЬ ЛИНИЯ DOCK

Очень простое использование

Это, в основном, дополнительный способ хранения информации, доступ к которой возможен через весь проект. В этом случае <meta-data> определяется вне тега <activity> и внутри тега <application>.

Определение:

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

Чтение:

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

Вы можете сохранить boolean, int, String или float.

Он полезен для библиотеки или API

Скажем, что вы создали API/LIB, который можно использовать для всех. Однако для конкретной процедуры вам понадобится KEY и что KEY должен быть определен разработчиком, который будет использовать ваш API. Таким образом, вы не можете предсказать, какой ключ будет разделять разработчик.

Используя <meta-data>, разработчик, который хочет использовать ваш API/LIB, может совместно использовать KEY с вами. Таким образом, вы оставляете свой API настроенным для чтения этого KEY и создания исключения, если пользователь не определил.

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.");
}

Один классический пример - Google Ads (Admob).

Вы должны добавить следующую строку в свой 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" />

Это загрузит com.google.android.gms.version со значением, представленным @integer/google_play_services_version. Тогда, возможно, Google Play Services (Admob) прочитает эти метаданные, и он сможет определить версию Службы Google Play, которую вы использовали при создании своего приложения.

Другой пример

Другое использование для <meta-data> - это когда использовать их для настройки Activity. Таким образом, вы можете передавать важную информацию в андроид о своей деятельности, а затем Android может правильно обрабатывать вашу деятельность. В этом случае тег <meta-data> добавляется внутри тега <activity>.

Первый пример, который я вижу, - это когда вы определяете активность поиска.

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

Затем, чтобы получить метаданные из тега активности, используйте это:

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

Ответ 2

Позвольте мне привести простой пример. Это помогает найти дополнительную информацию - основное объяснение метаданных.

317-745-4618

Если я добавлю метаданные, которые он номер телефона, чем вы знаете, или можете определить географическую область из этого. Если бы я не указал, что это номер телефона, чем у вас недостаточно метаданных, чтобы узнать, что это за объект. Это может быть SSN в США, или это может быть что-то еще.

Он используется в Android для добавления объектов в манифест, например, если вы используете Google Service, он добавит его для обозначения версии Google Services, к которой привязывается приложение.

Ответ 3

Метаданные - это данные, которые описывают другие данные, чтобы информировать другие приложения о том, как использовать сами данные.

Использование Android:
Умения - отличный пример для этого. Если вы хотите передать данные в намерениях, это должно быть примитивным, потому что у Android есть только метаданные предварительной сборки об этих типах объектов. (Строка и целое имеют различную двоичную структуру, с которой система знает, как работать).

Intents также позволяют создавать собственные метаданные для ваших пользовательских объектов с помощью класса Parcel (этот процесс вручную создает вашу собственную метаду под названием marshalling)