Android, Обнаружьте, когда другие приложения будут запущены

Я пытаюсь разработать приложение, которое препятствует тому, чтобы пользователь добрался до указанного приложения без пароля. Сценарий...

  1. пользователь нажимает на приложение "Email" (например),
  2. мое приложение обнаруживает запуск приложения
  3. мое приложение подтверждает, что это - "почтовое" приложение
  4. мое приложение открывает представление чрезмерно, прося пароль
  5. пользователь вводит пароль, если корректный, мое приложение исчезает, оставляя "почтовое" приложение на вершине

Я в порядке, делая остальную часть его, просто часть 2 является озадачивающей меня, и после многих дней, читая на Широковещательных Намерениях и т.д. и пытаясь прислушаться "android.intent.action. ОСНОВНОЙ" и т.д. в моих испытательных проектах я, может казаться, не обнаруживаю, когда приложение кроме моих запускается.

Кто-либо может помочь? Я иду об этом правильным путем в поиске новых приложений, широковещательно передающих намерение запуститься, или я должен читать системный журнал для новых намерений или делать что-то в собственном коде?

Любые указатели помогли бы, даже если Вы не можете ответить на это полностью, я смогу провести еще некоторое исследование.Большое спасибо. Ian

90
задан teedyay 11 October 2010 в 08:26
поделиться

3 ответа

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

Что вы можете сделать, так это заменить программу запуска. Если пользователь согласится на это.

12
ответ дан 24 November 2019 в 07:07
поделиться

Основная проблема заключается в том, что вы пытаетесь прослушать неявные намерения, когда Launcher (домашний экран) обычно использует явные намерения.

Неявное намерение - это когда вы хотите сказать: "Кто-нибудь, воспроизведите это видео", и Android выбирает приложение, которое может обработать это намерение.

Явное намерение - это то, что происходит, когда вы нажимаете значок "Электронная почта" на главном экране. Это конкретное указание Android открыть конкретное приложение по полностью определенному имени (т.е. com.android.mail или что-то в этом роде).

AFAIK не существует способа перехватить такие явные намерения. Это мера безопасности, встроенная в Android, что никакие два действия не могут иметь одинаковое полное имя пакета. Это предотвращает клонирование приложения третьими лицами и маскировку под это приложение. Если бы то, что вы хотите сделать, было возможно, теоретически вы могли бы установить приложение, которое могло бы блокировать работу всех приложений ваших конкурентов.

То, что вы пытаетесь сделать, противоречит модели безопасности Android.

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

10
ответ дан 24 November 2019 в 07:07
поделиться

Возможно, вам нужна служба, что-то, что будет постоянно работать в фоновом режиме. Тогда пусть ваша служба делает то, что вы сказали. Слушайте android.intent.action.MAIN также с категорией android.intent.category.LAUNCHER. Затем пусть широковещательный приемник переопределит метод onReceive и выполнит проверку, чтобы увидеть имя приложения и т.д.

3
ответ дан 24 November 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: