Android之meta-data使用

本文详细探讨了Android中meta-data标签的使用,包括它在清单文件中的作用、如何存储和检索元数据、以及在组件间传递信息的关键应用场景。通过实例解析,揭示了meta-data在权限声明、第三方库配置等方面的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    元数据meta-data应用在manifest.xml文件中,主要用以为父组件提供配置数据。一个组件中可以包含有多个meta-data;
    其可被包含于<activity>、<activity-alias>、<service>、<receiver>中。
其基本使用语法为:

<meta-data
    android:name="data_name"
    android:value="@string/meta_data"
    android:resource="@string/meta_data"/>
类似于一个键值对的形式,使用value则保存的是对应的String等值,使用resource则保存的是对应的资源Id值。

在四个组件中的使用及获取方式如下:
一、activity/activity-alias
1、在manifest中使用:

<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>
    
    <meta-data
        android:name="data_name"
        android:value="@string/meta_data"
        />
</activity>

2、在代码中获取数据:

    // 使用时注意加上try_catch
    ActivityInfo actInfo = this.getPackageManager().getActivityInfo( 
            getComponentName(), PackageManager.GET_META_DATA); 
    String msg = actInfo.metaData.getString("data_name"); 
    // 如果meta-data类型是资源ID,使用getInt获取资源ID即可

二、service
1、使用:

<service android:name=".MyService">
    <meta-data
        android:name="data_name"
        android:value="@string/meta_data"/>
</service>

2、代码中获取数据:

    ComponentName cn = new ComponentName(this, MyService.class); 
    ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn, 
            PackageManager.GET_META_DATA);
    String msg = serInfo.metaData.getString("data_name");

三、receiver
1、使用

<receiver android:name=".MyReceiver">
    <meta-data
        android:name="data_name"
        android:value="@string/meta_data"/>
 
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE"/>
    </intent-filter>
</receiver>

2、代码中获取数据

    ComponentName cn = new ComponentName(this, MyReceiver.class); 
    ActivityInfo info = this.getPackageManager().getReceiverInfo(cn, 
                PackageManager.GET_META_DATA); 
    String msg = info.metaData.getString("data_name"); 


四、application
1、使用

<application>
    <meta-data
        android:name="data_name"
        android:value="@string/meta_data"/> 
</application>

2、代码中获取数据 

   ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo( 
            getPackageName(), PackageManager.GET_META_DATA); 
    String msg = appInfo.metaData.getString("application_name");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值