gpt4 book ai didi

android - 无法读取单元测试用例中AndroidManifest.xml的元数据

转载 作者:太空狗 更新时间:2023-10-29 14:36:50 24 4
gpt4 key购买 nike

我正在为我的 android 应用程序编写本地单元测试用例。在其中一个测试用例中,我需要读取 AndroidManifest.xml 中定义的元数据的内容

我可以通过调用这些方法轻松读取数据 - metadata.getString()/metadata.getBoolean()在运行应用程序时

我无法在单元测试中访问相同的内容。maifest 中定义的所有键的值在这里似乎为空。

在下面的代码中,对象 ai 被正确创建,res 为空,aM 为空,

元数据不为空,它具有 list 文件中定义的 hub_url、enable_transmission 和身份验证的值。

奇怪的是,当我尝试访问变量 a、b 和 c 中的元数据内容时,它们都是 null

    val context = ApplicationProvider.getApplicationContext<Context>()
val ai = context!!.packageManager.getApplicationInfo( context.packageName, PackageManager.GET_META_DATA)
val res = ai.metaData.getBoolean( context.getString(R.string.enable_transmission))

val aM = ai.metaData.get( context.getString(R.string.enable_transmission))
val metadata = ai.metaData!!;

val a = metadata.getString(context.getString(R.string.hub_url))
val b = metadata.get(context.getString(R.string.enable_transmission));
val c = metadata.get(context.getString(R.string.authentication));

这是 list 文件内容

 <application>

<meta-data
android:resource="@string/basic"
android:name="@string/authentication"
android:value="@string/basic" />

<meta-data
android:resource="@string/hub_url"
android:name="@string/hub_url"
android:value="@string/hub_url" />

<meta-data
android:resource="@bool/enable"
android:name="@string/enable_transmission"
android:value="@bool/enable" />


</application>

最佳答案

试试这段代码,

val  context = applicationContext
val ai = context!!.packageManager.getApplicationInfo( context.packageName, PackageManager.GET_META_DATA)
val metadata = ai.metaData!!
val res = metadata.get( context.getString(R.string.enable_transmission))
val aM = metadata.get(context.getString(R.string.enable_transmission))

在 list 元数据标签中只使用 android:value 不使用 android:resource 而不是对象直接转换为特定格式。

关于android - 无法读取单元测试用例中AndroidManifest.xml的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54089781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com