【Android】【配置文件】gradle和manifest的使用(一):代码中使用manifest变量

在manifest的application,activity,service,receiver,provider标签下,可以配置mete-data来存储数值

<meta-data
   android:name="a"
   android:value="11" />

获取manifest数值的工具类

public class ManifestUtil {

    @SneakyThrows
    public static Bundle getApplicationMetaData(Context ctx) {
        PackageManager packageManager = ctx.getPackageManager();
        ApplicationInfo info = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
        return info.metaData;
    }

    @SneakyThrows
    public static Bundle getActivityMetaData(Activity ctx) {
        PackageManager packageManager = ctx.getPackageManager();
        ActivityInfo info = packageManager.getActivityInfo(ctx.getComponentName(), PackageManager.GET_META_DATA);
        return info.metaData;
    }

    @SneakyThrows
    public static Bundle getServiceMetaData(Context ctx, Class<? extends Service> clazz) {
        PackageManager packageManager = ctx.getPackageManager();
        ServiceInfo info = packageManager.getServiceInfo(new ComponentName(ctx, clazz), PackageManager.GET_META_DATA);
        return info.metaData;
    }

    @SneakyThrows
    public static Bundle getReceiverMetaData(Context ctx, Class<? extends BroadcastReceiver> clazz) {
        PackageManager packageManager = ctx.getPackageManager();
        ActivityInfo info = packageManager.getReceiverInfo(new ComponentName(ctx, clazz), PackageManager.GET_META_DATA);
        return info.metaData;
    }

    @SneakyThrows
    public static Bundle getProviderMetaData(Context ctx, Class<? extends ContentProvider> clazz) {
        PackageManager packageManager = ctx.getPackageManager();
        ProviderInfo info = packageManager.getProviderInfo(new ComponentName(ctx, clazz), PackageManager.GET_META_DATA);
        return info.metaData;
    }
}

在Activity调用工具类,获取mete-data数值

Bundle bundle = ManifestUtil.getApplicationMetaData(ctx);
TipBox.tip(bundle.getInt("a"));

猜你喜欢

转载自blog.csdn.net/u013718730/article/details/88170091