Manifest标签动态声明

时间:2018-01-17 11:10:25

标签: android tags

//Manifest file
<receiver    
      android:exported="true"
      android:enabled="true">
<intent-filter>
<action  android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

我们可以在代码中动态创建/添加android:enabled标签吗?

2 个答案:

答案 0 :(得分:0)

将其添加到模块级别的gradle代码中:

// modify AndroidManifest.xml
variant.processManifest.doLast {
    copy {
        from("${buildDir}/manifests") {
            include "${variant.dirName}/AndroidManifest.xml"
        }
        into("${buildDir}/manifests/$variant.name")

        filter {
            String line ->
                line.replaceAll("android:enabled=\"true\"/>",
                        "android:enabled=\"false\"")
        }

        // set the path to the modified Manifest:
        def manifestPath = "${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml"
        variant.processResources.manifestFile = file(manifestPath)
    }
}

PS:您必须使用逻辑来确定何时设置启用的false / true

答案 1 :(得分:0)

根据您的自定义程度,您需要最简单的选项可能是使用AndroidManifest.xml的不同版本,并在build.gradle中添加以下内容(在此处使用custom构建风格)

        sourceSets {
            custom {
                if (myFlag == "true") {
                    manifest.srcFile "src/custom/AndroidManifest.xml"
                } else {
                    manifest.srcFile "src/custom_disabled/AndroidManifest.xml"
                }
            }
        }