Технически, у вас нет возможности всегда знать «точное, оригинальное, домашнее приложение».
Вы можете использовать PackageManager
и queryIntentActivities()
, чтобы найти, кто все отвечает на MAIN
/ HOME
Intents
.Если есть два ответа, а ваш - один (я полагаю, это ваша ситуация), тогда другой - «точное, оригинальное, домашнее приложение» в значительной степени по определению.Далее вы можете проверить это, перейдя к объекту ApplicationInfo
, связанному с разрешенным действием, и проверив наличие FLAG_SYSTEM
, чтобы увидеть, установлен ли он в образе системы.Этот подход, вероятно, не является полностью пуленепробиваемым, но он может быть достаточно близок к вашим потребностям.
Еще один вариант - просто записать текущую активность по умолчанию MAIN
/ HOME
, когда вы запускаете дляпервый раз.Приличные шансы, что ваше приложение будет запущено до того, как пользователь выберет вас по умолчанию.Опять же, здесь есть дыры (например, они делают вас по умолчанию перед первым запуском).