Я пытаюсь изменить значок приложения и имя во время выполнения.
val pm = activity.packageManager
val packageName = BuildConfig.APPLICATION_ID
activity.packageManager.setComponentEnabledSetting(
ComponentName(packageName, packageName + activeName),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)
for (i in disableNames.indices) {
try {
activity.packageManager.setComponentEnabledSetting(
ComponentName(packageName, disableNames[i]),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP)
} catch (e: Exception) {
e.printStackTrace()
}
}
Значок и имя приложения меняются правильно, но если после этого я пытаюсь изменить тему приложения, у меня происходит сбой
Unable to start activity ComponentInfo{com.app.test.debug/com.app.test.presentation.ui.main.activity.MainActivity}: java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{com.app.test.debug/com.app.test.presentation.ui.main.activity.MainActivity-default}
Что я делаю не так?
<activity-alias
android:exported="true"
android:label="Default"
android:icon="@mipmap/ic_launcher_red"
android:name=".presentation.ui.main.activity.MainActivity-default"
android:enabled="true"
android:targetActivity="com.app.test.presentation.ui.main.activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:exported="true"
android:label="Second alias"
android:icon="@mipmap/ic_launcher_green"
android:name=".presentation.ui.main.activity.MainActivity-settings"
android:enabled="false"
android:targetActivity="com.app.test.presentation.ui.main.activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
Вот так выглядит мой псевдоним активности
Проблема в этой части кода
activity.packageManager.setComponentEnabledSetting(
ComponentName(BuildConfig.APPLICATION_ID, "com.app.test.presentation.ui.main.activity.MainActivity-default"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP)
Когда я удаляю эту часть, это помогает.Но теперь у меня есть две иконки: старая и новая.Старый значок не удаляется.
Логика:
1) Включить псевдоним активности.
2) Отключить старый псевдоним активности
3) Восстановить действие
4) Сбой java.lang.IllegalArgumentException: android.content.pm.PackageManager $ NameNotFoundException: ComponentInfo {com.app.test.debug / com.app.test.presentation.ui.main.activity.MainActivity-умолчанию}