什么是元数据? 它在android中有什么用处

我是新来的android,我以前没有看到或听说过元数据。 不过,我谷歌,并在YouTube上search它,它基本上是你的对象的信息。 纠正我,如果我错了。 任何人都可以帮助我更好地理解它。

1)元数据是什么?

2)为什么在android中使用?

如果说明为什么在android中使用元数据的例子,这将是很好的。 我已经看到他们在清单的活动元数据标签。

Solutions Collecting From Web of "什么是元数据? 它在android中有什么用处"

在Android中,您可以在AndroidManifest.xml定义meta-data信息

这是DOCK LINK

非常基本的用法

这基本上是一个额外的选项来存储可以通过整个项目访问的信息。 在这种情况下, <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 ,一个intString或浮点数。

这对于图书馆或API是有用的

假设您创build了一个可供所有人使用的API / LIB。 但是,对于特定的过程,您需要一个KEY并且该KEY必须由将使用您的API的开发人员定义。 这样,你无法预测开发者将分享哪个关键。

使用<meta-data> ,想要使用API​​ / LIB的开发人员可以与您共享KEY 。 这样,您将您的APIconfiguration为读取该KEY,并在用户未定义时引发exception。

 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服务(Admob)可能会读取此元数据,并可以确定您在构build应用程序时使用的Google Play服务的版本。

另一个例子

<meta-data>另一个用法是何时使用它们来configuration一个Activity。 通过这种方式,您可以将有价值的信息传递给您的活动,然后Android可以正确处理您的活动。 在这种情况下, <meta-data>标签被添加到<activity>标签中。

我看到的第一个例子是当你定义一个search活动。

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

让我给一个简单的例子..它有助于find更多的信息是基本的元数据解释..

317-745-4618

如果我添加的电话号码的元数据比你知道的或者可以找出它的来自的地理区域。 如果我没有说它的电话号码比你没有足够的元数据知道什么对象是..它可能是一个美国的SSN或者它可能是别的东西。

它在android中用于在清单中添加对象,例如,如果使用Google Service,可以添加它来指定应用绑定到的Google服务版本

元数据是描述其他数据的数据,以通知其他应用程序如何使用数据本身。

Android用法:
Intents就是一个很好的例子 – 如果你想在intents中传递数据,它必须是原始的,因为Android只有预先构build的这些types的对象的元数据。 (string和整数具有不同的二进制结构,系统知道如何处理)。

Intents也允许你通过Parcel类创build自己的元数据到你的自定义对象(这个手动构build你自己的metada的过程称为marshalling )