Я пишу приложение, похожее на приложение-защитник - оно предлагает пользователю аутентифицировать себя при запуске защищенного приложения. Поскольку Android не предоставляет возможности использовать BroadcastReceiver с явными намерениями, я обнаруживаю запуск приложений, отслеживая logcat. Для большинства приложений я слушаю что-то вроде «Начало активности ...», а затем добавляю намерение к моей собственной аутентификации.
Однако, похоже, в этом есть лазейка, когда защищенное приложение A запускается через другое приложение B. Приложение A запускается только один раз (и, следовательно, в logcat будет иметься только одна запись «Начало действия ...», и если я переключусь на приложение B из своей деятельности, оно будет перенаправлено в приложение A, и на этот раз я не смогу его обнаружить, так как logcat не показывает его запуск.
Примером может служить установщик пакета, являющийся защищенным приложением, и файловый менеджер, запускающий установщик пакета после нажатия apk-файла. Хотя мои действия по аутентификации вызываются в первый раз, если я снова переключусь на файловый менеджер, он автоматически покажет установщик пакета, и на этот раз мое приложение не обнаружит его.
Я пробовал несколько приложений для защиты приложений, таких как App Protector Lite и Smart App Protector, и у них, похоже, нет этой проблемы. У них также есть похожие разрешения - GET_TASKS, READ_LOGS, RECEIVE_BOOT_COMPLETED и SYSTEM_ALERT_WINDOW. Кто-нибудь знает, что можно сделать, чтобы решить мою проблему?
Спасибо.