Android 从清单配置文件元数据中获取值

本文详细探讨了Android应用开发中的关键配置文件AndroidManifest.xml的使用,包括如何从该文件中获取元数据,并介绍了如何通过资源管理器获取布局文件中的控件。文章深入分析了resource.getIdentifier()方法的功能及其实现原理,帮助开发者更高效地管理和使用资源。

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

最近在上班工作当中,也尝到了一些新的知识,现总结如下
(1)从AndroidManifest.xml配置文件中获取meta数据

复制代码
// 从Manifest.xml配置文件中获取数据
    public static String getMetaValue(Context context, String metaKey) {
        Bundle metaData = null;
        String metaValue = null;
        if (context == null || metaKey == null) {
            return null;
        }
        try {
            ApplicationInfo ai = context.getPackageManager().getApplicationInfo(
                    context.getPackageName(), PackageManager.GET_META_DATA);
            if (null != ai) {
                metaData = ai.metaData;
            }
            if (null != metaData) {
                metaValue = metaData.getString(metaKey);
            }
        } catch (NameNotFoundException e) {
        }
        return metaValue;// xxx
    }
<meta-data android:name="api_key" android:value="xxx" />
复制代码

(2)获取layout文件中的一些控件,如下是一个Activity

复制代码
public class CustomActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Resources resource = this.getResources();
        String pkgName = this.getPackageName();

        setContentView(resource.getIdentifier("custom_activity", "layout", pkgName));
    // 获取pkgName包下名为custom_activity的一个layout文件
TextView titleView = (TextView) this.findViewById(resource.getIdentifier("title", "id", pkgName));
    // 获取pkgName包下id为title的一个widget
} }
复制代码

之后在AndroidManifest.xml中,对该Activity进行配置,配置包名为完全路径名。
下面是查看resource.getIdentifier()方法分析

复制代码
    public int getIdentifier(String name, String defType, String defPackage) {
        try {
            return Integer.parseInt(name);
        } catch (Exception e) {
            // Ignore
        }
        return mAssets.getResourceIdentifier(name, defType, defPackage);
    // getResources().getIdentifier(name, defType, defPackage) }
复制代码

返回给定的resource_name所对应的标识符,类似于R文件中的id(个人理解)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值