如何理解Android中的meta-data标签

是什么?

提供组件额外的数据,它本身就是一个键值对,可以自定义名称和值。

用在哪些位置?

    <activity>
    <activity-alias>
    <application>
    <provider>
    <receiver>
    <service> 

怎么用?

  1. 配置好信息
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.fedming.notches">

    <application
        ...
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data
                android:name="meta_act"
                android:resource="@string/app_name" />
        </activity>
        <meta-data
            android:name="meta_app"
            android:value="value from meta_app" />
    </application>

</manifest>
  1. 代码获取配置信息
//获取value
private String getMetaDataFromApp() {
    String value = "";
    try {
        ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),
                PackageManager.GET_META_DATA);
        value = appInfo.metaData.getString("meta_app");
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return value;
}
//获取resource id
private int getMetaDataIdFromAct() {
    int resId= 0;
    try {
        ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),
                PackageManager.GET_META_DATA);
        resId= activityInfo.metaData.getInt("meta_act");
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return resId;
}
  1. 查看结果
06-09 21:21:04.624 14238-14238/com.fedming.notches D/fdm:  meta_app : value from meta_app
06-09 21:21:04.625 14238-14238/com.fedming.notches D/fdm:  meta_act_id : 2131427357, meta_act_string : Notches

什么时候用

接入第三方SDK的鉴权,以及系统属性配置:比如配置屏幕支持比例,配置SearchableActivity

参考文档
主要参考这位大佬的文章
参考2
官方文档

上一篇:2022.02.21_HTML+CSS学习总结_HTML基础


下一篇:IT审计-zabbix安装