我正在为Android开发策略管理器。 根据给定的规则集和设备的当前状态,它应该限制(允许/禁止)用户启动某些应用程序。
我认为它应该是在后台运行的服务,可能会拦截所有启动应用程序的尝试,检查它是否正常,然后在允许它们运行时启动它们。如果设备的状态指示应该这样做,它也可以自己启动和停止某些应用程序。
有没有办法以编程方式执行此操作?控制允许哪些应用程序在某个时间启动而哪些不是?还要停止已经运行的应用程序?
总之,有没有办法以编程方式“拦截”尝试启动应用程序,并可能否认这些?
答案 0 :(得分:0)
我找到了以下名为AppLocker的开源项目:
http://code.google.com/p/applocker/source/checkout
如果任何其他非允许的活动试图进入,则每隔100毫秒检查一次 前景。如果是这样,那么AppLocker会快速启动自己的阻止密码请求活动,然后其他应用程序的活动才有时间进入OnCreate()方法(取决于前景活动状态检查的频率)。
然而,这个应用似乎无法在Android 4.1上运行,因为权限READ_LOGS 已被删除。 : - (
然而,似乎在一个有根的设备上,无论如何都可以获得许可。看这篇文章: READ_LOGS permission on Jelly Bean (api 16)
答案 1 :(得分:0)
找到防止应用启用/可见的解决方案。
只需将您的应用程序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 /,则会收到权限拒绝错误。