Я пытаюсь разработать приложение, которое препятствует тому, чтобы пользователь добрался до указанного приложения без пароля. Сценарий...
Я в порядке, делая остальную часть его, просто часть 2 является озадачивающей меня, и после многих дней, читая на Широковещательных Намерениях и т.д. и пытаясь прислушаться "android.intent.action. ОСНОВНОЙ" и т.д. в моих испытательных проектах я, может казаться, не обнаруживаю, когда приложение кроме моих запускается.
Кто-либо может помочь? Я иду об этом правильным путем в поиске новых приложений, широковещательно передающих намерение запуститься, или я должен читать системный журнал для новых намерений или делать что-то в собственном коде?
Любые указатели помогли бы, даже если Вы не можете ответить на это полностью, я смогу провести еще некоторое исследование.Большое спасибо. Ian
Я думаю и надеюсь, что это невозможно. Подумайте, как легко такой функционал может быть использован вредоносным ПО. Вы можете прослушивать намерения, направленные на вас, и те, которые транслируются, но запуск приложения не должен быть широковещательным событием.
Что вы можете сделать, так это заменить программу запуска. Если пользователь согласится на это.
Основная проблема заключается в том, что вы пытаетесь прослушать неявные намерения, когда Launcher (домашний экран) обычно использует явные намерения.
Неявное намерение - это когда вы хотите сказать: "Кто-нибудь, воспроизведите это видео", и Android выбирает приложение, которое может обработать это намерение.
Явное намерение - это то, что происходит, когда вы нажимаете значок "Электронная почта" на главном экране. Это конкретное указание Android открыть конкретное приложение по полностью определенному имени (т.е. com.android.mail или что-то в этом роде).
AFAIK не существует способа перехватить такие явные намерения. Это мера безопасности, встроенная в Android, что никакие два действия не могут иметь одинаковое полное имя пакета. Это предотвращает клонирование приложения третьими лицами и маскировку под это приложение. Если бы то, что вы хотите сделать, было возможно, теоретически вы могли бы установить приложение, которое могло бы блокировать работу всех приложений ваших конкурентов.
То, что вы пытаетесь сделать, противоречит модели безопасности Android.
Одно, что вы могли бы сделать, это сотрудничать с конкретными разработчиками приложений для передачи намерений вашей системе безопасности, но это, вероятно, не то, с чем вы хотите иметь дело.
Возможно, вам нужна служба, что-то, что будет постоянно работать в фоновом режиме. Тогда пусть ваша служба делает то, что вы сказали. Слушайте android.intent.action.MAIN также с категорией android.intent.category.LAUNCHER. Затем пусть широковещательный приемник переопределит метод onReceive и выполнит проверку, чтобы увидеть имя приложения и т.д.