Что такое метаданные? И что это за польза в android

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

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

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

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

3 ответов


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

ВОТ ДОК ССЫЛКА

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

это в основном дополнительная опция для хранения информации, которая может быть доступна через весь проект. В этом случае <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, an int, String или поплавок.

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

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

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

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> когда использовать их для настройки действия. Таким образом, вы можете передать ценную информацию android о своей деятельности, а затем 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>

затем, чтобы получить метаданные из тега activity, используйте следующее:

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

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

317-745-4618

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

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


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

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

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