读取AndroidManifest.xml中的meta-data

AndroidManifest.xml中定义了meta-data,例如常见的渠道名:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="zhangphil.book">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        ......

        <meta-data
            android:name="APP_CHANNEL"
            android:value="zhangphil" />
    </application>
</manifest>

上层Java代码读取:

        ApplicationInfo appInfo;
        try {
            appInfo = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);
            Bundle bundle = appInfo.metaData;
            String app_channel = bundle.getString("APP_CHANNEL", null);

            Toast.makeText(getApplicationContext(), app_channel, Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
        }

 

需要注意的是,如果meta-data不是定义在application里面,而是在activity或者service等Android组件里面,代码实现会有不同。如果meta-data定义在service里面,那么上层Java代码读取的方式为:

ComponentName cn = new ComponentName(this, XXXService.class);
ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
String xxx_value = info.metaData.getString("xxx_key");

 

若是activity,则形式类似,用到的关键组件是activity的。如果是广播broadcast,则是广播的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值