Что такое метаданные? И что это за польза в 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 также позволяют создавать ваши собственные метаданные для пользовательских объектов через участка класс (этот процесс ручного построения собственной метады называется упорядочить)