【发布时间】:2012-12-15 09:54:59
【问题描述】:
是否可以以编程方式阻止在 android 中安装/卸载应用程序?如果可能的话,我该如何为我的儿童应用程序执行此操作。我无法获得有用的答案。非常感谢任何帮助。
提前致谢
【问题讨论】:
是否可以以编程方式阻止在 android 中安装/卸载应用程序?如果可能的话,我该如何为我的儿童应用程序执行此操作。我无法获得有用的答案。非常感谢任何帮助。
提前致谢
【问题讨论】:
是的,可以以编程方式执行此操作。从下面的代码中,您可以使用意图来执行此操作。 安装APK:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(intent);
卸载 APK:
Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
getPackageManager().getPackageArchiveInfo(apkUri.getPath(), 0).packageName,null));
startActivity(intent);
希望对您有所帮助。谢谢。
【讨论】:
没有 API 可以做这样的事情
但是 - 您可以开发自己的自定义启动器
Android - creating custom launcher,并以此限制用户只能看到或做你想做的事情。例如 - 当您实现显示所有应用程序的主屏幕时 - 当您实现卸载功能时 - 打开一些对话框要求输入密码..
您还需要 root 设备,以实现隐藏系统栏 - 以防止用户访问设置。隐藏状态栏有点棘手,需要运行 linux 命令。例如,在蜂窝中你可以这样做 - http://android.serverbox.ch/?p=306
stock-rom 附带的内置默认启动器不提供此类功能,但我相信您可以在 Google Play 中找到一些提供此类功能的自定义启动器。安装启动器并重新启动设备后 - 您可以将他定义为默认启动器 - 即使您的孩子将重新启动设备 - 他们也只能访问自定义启动器。
作为一名 Android 开发人员,如果还没有人开发过这样的启动器,我会感到非常惊讶,因为对于开发启动器应用程序的人来说,这是一个非常简单的开发功能。
【讨论】:
如果您想在孩子不知情的情况下执行此操作,您可以不时检查他/她手机中安装的应用程序并卸载不需要的应用程序。请参阅Install apps silently, with granted INSTALL_PACKAGES permission 中接受的答案。您应该使用设备系统证书对您的应用进行签名。
【讨论】:
从 Android Lollipop (5) 开始,DevicePolicyManager API 允许 profile owner 管理员或 device owner 管理员隐藏和阻止卸载托管应用程序。 将您的管理应用程序配置为个人资料所有者或设备所有者后,请使用以下 API:
对于配置文件所有者管理员,这两个 API 将仅适用于配置文件管理的即时应用程序(设置工作配置文件后,大多数应用程序被克隆并具有 2 个实例 - 用户即时和配置文件即时)。
共享系统 uid (android:sharedUserId="android.uid.system") 的系统应用程序可以通过直接调用 IPackageManager interfaces 来使用相同的功能,而无需成为配置文件/设备所有者。
【讨论】: