Собственный настраиваемый менеджер политик Android [закрыт]

Я разрабатываю диспетчер политик для Android. В зависимости от заданного набора правил и текущего состояния устройства предполагается ограничивать (разрешать/запрещать) запуск определенных приложений пользователем.

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

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

В заключение, есть ли способ программно «перехватывать» попытки запуска приложений и, возможно, блокировать их?


person JohnyTex    schedule 13.02.2014    source источник
comment
Пока ничего. Я изучаю разные возможности. Поиск лучшего подхода. У тебя есть идеи?   -  person JohnyTex    schedule 13.02.2014
comment
stackoverflow.com/questions/how-to-ask -- ваш вопрос здесь не по теме, извините.   -  person 323go    schedule 13.02.2014
comment
Почему это не по теме? Я думаю, что это актуальная тема для многих, кто хочет разработать такое приложение. Я закончил вопрос более кратко. Не могли бы вы сейчас удалить свой отрицательный голос?   -  person JohnyTex    schedule 13.02.2014
comment
Я думал о перехвате намерений startActivity, но я не знаю, является ли это жизнеспособным решением, потому что перехват намерений может рассматриваться как угроза безопасности и, следовательно, может быть исправлен, что сделает мое приложение бесполезным в будущих версиях Android.   -  person JohnyTex    schedule 14.02.2014


Ответы (2)


Я нашел следующий проект с открытым исходным кодом под названием AppLocker:

http://code.google.com/p/applocker/source/checkout

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

Однако это приложение, похоже, не работает на Android 4.1 и выше, поскольку разрешение READ_LOGS было удалено. :-(

Однако, похоже, что на рутированном устройстве разрешение может быть получено в любом случае. См. этот пост: разрешение READ_LOGS для Jelly Bean (api 16)

person JohnyTex    schedule 14.02.2014

Найдено решение для предотвращения включения/видимости приложений.

Просто скопируйте apk приложения из /data/app в /sdcard/, затем удалите приложение, а затем скопируйте apk из /sdcard/ в system/app/. Наконец, перезагрузите устройство. Это даст вашему приложению системные привилегии.

Теперь вы можете использовать следующий код, чтобы включить/отключить ваше приложение (сделав его полностью невидимым даже из меню настроек):

PackageManager pm=this.getPackageManager(); pm.setApplicationEnabledSetting("com.gueei.applocker",PackageManager.COMPONENT_ENABLED_STATE_DISABLED,0);

Единственное, вам нужно знать имя пакета приложения, которое вы хотите показать/скрыть. Если вы не скопируете свой apk в /system/app/, вы получите ошибку отказа в разрешении.

person JohnyTex    schedule 17.02.2014