开发者

get activityInfo metaData in onCreate method

开发者 https://www.devze.com 2023-04-06 15:41 出处:网络
I need to retrieve a value from the AndroidManifest.xml file, stored as a meta data: <meta-data android:value=\"3\" android:name=\"myInterestingValue\" />

I need to retrieve a value from the AndroidManifest.xml file, stored as a meta data:

<meta-data android:value="3" android:name="myInterestingValue" />

In the onCreate method, I call the following method:

private Object getMetaData(String name) {
    try {
        ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
        Bundle metaData = ai.metaData; 
        if(metaData == null开发者_开发问答) {
            debug("metaData is null. Unable to get meta data for " + name);
        }
        else {
            Object value = (Object)metaData.get(name);
            return value;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

But the metaData is always null. Is it impossible to access the metaData in the onCreate method? i.e. The activity has not been fully initialized yet.


You will need to use the flags GET_ACTIVITIES and GET_META_DATA.

ActivityInfo ai = getPackageManager()
        .getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);


If you are interested, android-metadata is a framework that makes it easier to get metadata from the Android manifest. The way you would get the meta-data above using android-metadata is:

int val = ManifestMetadata.get (context).getValue ("myInterestingValue", Integer.class);

Full disclosure: I'm the creator of android-metadata.


I've tried jasonj's answer but it doesn't work. To retrieve meta-data from manifest file, I must get the following code

ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;

OR the Kotlin version:

val ai = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
val bundel = ai?.metaData 
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号