Невозможно прочитать метаданные AndroidManifest.xml в случаях модульного тестирования - PullRequest
0 голосов
/ 08 января 2019

Я пишу локальные тестовые случаи для моего приложения для Android. В одном из тестовых случаев мне нужно прочитать содержимое метаданных, определенных в AndroidManifest.xml

Я легко могу прочитать данные, вызвав эти методы - metadata.getString () / metadata.getBoolean () во время работы приложения

Я не могу получить доступ к тому же в модульном тестировании. значения всех ключей, определенных в maifest, здесь равны нулю.

В приведенном ниже коде объект ai создан правильно, Res является нулем, aM - ноль,

метаданные не являются нулевыми и имеют значения для hub_url, enable_transmission и аутентификации, как определено в файле манифеста.

Странно, что когда я пытаюсь получить доступ к содержимому метаданных в переменных 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>

1 Ответ

0 голосов
/ 09 января 2019

Попробуйте этот код,

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: значение, не использующее android: ресурс, а не прямое преобразование объекта в определенном формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...