如何以编程方式填充AndroidManifest元数据值?

时间:2017-03-29 20:09:06

标签: java android xml android-intent android-manifest

我理解AndroidManifest.xml是在编译时准备的而不是运行时,有没有其他方法可以在不依赖硬编码字符串的情况下填充清单中的元数据?也许在编译时以某种方式填充它?

我目前在AndroidManifest.xml

上有以下内容
<application
    android:allowBackup="true"
    android:icon="@drawable/dt_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <meta-data
        android:name="DataPath"
        android:value=""
     /> ...

我不想对该值进行硬编码,而是使用以下结果填充它:

Environment.getExternalStorageDirectory()

稍后,另一个应用程序将使用DataPath的metaData属性检索ApplicationInfo的值。

1 个答案:

答案 0 :(得分:2)

  

我相信我在某处可以看到它可以在编译时分配值,但仍然没有硬编码

您可以做的最好的事情是通过manifest placeholders从gradle分配值。

示例:

android {
    defaultConfig {
        manifestPlaceholders = [hostName:"www.example.com"]
    }
    ...
}

<intent-filter ... >
    <data android:scheme="http" android:host="${hostName}" ... />
    ...
</intent-filter>