我必须实现可以通过填写密码来阻止设备中安装的任何应用程序的功能。当我单击启动应用程序的图标时,它应该要求输入密码。是否可以。请对此提出建议。
3 回答
在 Android 中,这种行为在应用程序级别是不可能的。
虽然我有一个 hack 方法,但您可以尝试如下:
步骤:创建一个服务,该服务将不断检查顶部堆栈上正在运行的应用程序:
您可以使用以下代码检查在顶部运行的当前应用程序(任何应用程序)包名称:
String packageName= getSystemService(Context.ACTIVITY_SERVICE).getRunningTasks(1).get(0)).topActivity.getPackageName();
现在您需要比较运行最多的应用程序的包名称,这是否是您要阻止的应用程序..
假设您想阻止 Android 中的浏览器应用程序,那么当用户点击浏览器图标时,该应用程序将移动到堆栈顶部,并且您正在运行的服务会识别它。
然后,您需要在该应用程序上打开自己的虚拟锁定屏幕。这样,用户将无法访问该应用程序,并且如果用户尝试在您的虚拟锁定屏幕上按下后退按钮,那么您需要覆盖后退按钮并在其上启动主屏幕意图。
这是一种创建可以锁定特定应用程序的应用程序的技巧:我从 Play 商店对几个应用程序进行了逆向工程,他们也使用这种技术来执行此操作。
希望这能给你一个想法。
阻止设备中安装的任何应用程序
您可以通过修改固件来实现此目的。
当我单击启动应用程序的图标时,它应该要求输入密码
如果您有 INSTALL_SHORTCUT 和 UNINSTALL_SHORTCUT 权限,也是可能的。然后,您将能够执行 Launcher 可以执行的操作。以这个链接为例。
由于 Android 是开源的,一切皆有可能,但这意味着您必须重写 Android 操作系统的自然行为。
并在您的设备上安装这个“被黑”的操作系统。我看不出您如何将这种服务作为应用程序提供。