拥有自定义Android策略管理器

时间:2014-02-13 15:22:58

标签: android device-policy-manager

我正在为Android开发策略管理器。 根据给定的规则集和设备的当前状态,它应该限制(允许/禁止)用户启动某些应用程序。

我认为它应该是在后台运行的服务,可能会拦截所有启动应用程序的尝试,检查它是否正常,然后在允许它们运行时启动它们。如果设备的状态指示应该这样做,它也可以自己启动和停止某些应用程序。

有没有办法以编程方式执行此操作?控制允许哪些应用程序在某个时间启动而哪些不是?还要停止已经运行的应用程序?

总之,有没有办法以编程方式“拦截”尝试启动应用程序,并可能否认这些?

2 个答案:

答案 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 /,则会收到权限拒绝错误。