Android 获取清单文件中的meta-data,以及碰到数值为null解决方法

版权声明:来,一起秃顶不咯?铮亮铮亮的那种哦, 大神转载请标明出处 https://blog.csdn.net/yue_233/article/details/91453451

Android 获取清单文件中的meta-data,以及碰到数值为null解决方法

1.meta-data是什么?如何获取meta-data?

在AndroidManifest.xml中,元素可以作为子元素,被包在activity、application 、service、或者receiver元素中,不同的父元素,在应用时读取的方法也不同。

在activity中:

        ActivityInfo info = null;
        try {
            info = this.getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        info.metaData.getString("meta_name");

在application中:

ApplicationInfo appInfo = null;
        try {
            appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        appInfo.metaData.getString("meta_name");

在service中:

ComponentName cn = new ComponentName(this, XXXXService.class);
        ServiceInfo info = null;
        try {
            info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        info.metaData.getString("meta_name");

在receiver中:

ComponentName cn = new ComponentName(getApplicationContext(), XXXXXReceiver.class);
        ActivityInfo info = null;
        try {
            info = getApplicationContext().getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        info.metaData.getString("meta_name");

2.遇到的问题:获取到值为null

之前在application中获取一直key值,但是一直获取到的都是null,后来人大神说:读取字符串的数值要用info.metaData.getInt,尝试了一下,弯的佛,成功拿到,如果是数值类型的,获取值的时候,可以采用:

 info.metaData.getInt("meta_name"));
 替代info.metaData.getString("meta_name");

本人经验不足,有问题欢迎指出,互相学习…一起秃顶

猜你喜欢

转载自blog.csdn.net/yue_233/article/details/91453451