Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式填充AndroidManifest元数据值?_Java_Android_Xml_Android Intent_Android Manifest - Fatal编程技术网

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

Java 如何以编程方式填充AndroidManifest元数据值?,java,android,xml,android-intent,android-manifest,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" a

据我所知,
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()

另一个应用程序稍后将利用
ApplicationInfo
的元数据属性检索
DataPath
的值

我相信我在某个地方读到过,它可以在编译时赋值,但仍然不能硬编码

您所能做的最好是通过gradle分配一个值

例如:

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

<intent-filter ... >
    <data android:scheme="http" android:host="${hostName}" ... />
    ...
</intent-filter>
android{
默认配置{
manifestPlaceholders=[主机名:“www.example.com”]
}
...
}
...

我认为您无法在运行时更改元数据值@Shubham的可能副本我写的第一句话“我知道AndroidManifest.xml是在编译时准备的,而不是在运行时。”我正在寻找另一种方法,我相信我在某个地方读到,可以在编译时分配值,但仍然不能硬编码它。。。