Можно ли добавить новые ActivityAliases во время выполнения?

В AndroidManifest.xml можно определить несколько <activity-alias> элементы. Тем не менее ActivityAliasJava-класс не предполагает, что эти псевдонимы могут быть определены во время выполнения.

Можно ли добавить новые псевдонимы активности в приложение во время выполнения?

2 ответа

Вы не можете динамически добавлять новый псевдоним активности в свое приложение или редактировать файл манифеста, так как это будет нарушением модели безопасности Android. Одна из целей файла манифеста состоит в том, что разработчик должен определить, какие действия являются частью приложения и что им разрешено делать. Просто прочитайте документацию по Android о подписании приложений. Приложения Android должны быть подписаны закрытым ключом, прежде чем они будут опубликованы в Google Play. Если вы сможете изменить любой из файлов приложения в файле.apk, тогда подпись больше не будет правильной, и проверка не удастся.

Из пояснения, которое вы дали в комментариях, видно, что вы на самом деле не хотите или не должны определять эти псевдонимы во время выполнения.

Что вы на самом деле хотите сделать, так это определить множество псевдонимов (каждый со своим значком и текстом), но только один из них должен быть активен одновременно. Когда конкретный пользователь запускает ваше приложение, вы определяете, с каким брендом они связаны, и активируете только этот псевдоним с помощью PackageManager.setComponentEnabledSetting. Вы можете столкнуться с проблемами с некоторыми программами запуска, которые кэшируют значки, и могут запутаться, когда включенные действия для приложения изменятся, но любые проблемы будут просто недолговечны и, как правило, исчезнут при следующей перезагрузке телефона (и, таким образом, приложение запуска будет перезапущено.).

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

Другие вопросы по тегам