我正在为我的android应用程序编写本地单元测试用例。 在其中一种测试用例中,我需要读取AndroidManifest.xml中定义的元数据的内容
我可以通过调用以下方法轻松地读取数据-metadata.getString()/ metadata.getBoolean() 在运行应用程序时
我无法在单元测试中访问相同的内容。 在清单中定义的所有键的值在此处似乎为空。
在下面的代码中,对象 ai已正确创建, res为空, aM为空,
元数据不为空,并且具有清单文件中定义的hub_url,enable_transmission和authentication的值。
奇怪的是,当我尝试访问变量a,b和c中的元数据内容时,所有内容都为空
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));
这是清单文件的内容
<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>
答案 0 :(得分:0)
尝试此代码,
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))
在清单元数据标记中,仅使用android:value而不使用android:resource而不是将对象直接转换为特定格式。