如何以编程方式防止在Android中安装/卸载应用程序?

时间:2012-12-31 06:20:26

标签: android uninstall

是否有可能以编程方式阻止在Android中安装/卸载应用程序?如果有可能我怎么能为我的孩子应用程序做这个。我无法得到一个有用的答案。任何帮助很多欣赏。

先谢谢

4 个答案:

答案 0 :(得分:1)

没有API可以做这样的事情

但是 - 您可以开发自己的自定义启动器

Android - creating custom launcher,以此来限制用户查看或仅执行您想要的操作。例如 - 当您实现显示所有应用程序的主屏幕时 - 当您实施卸载功能时 - 打开一些请求密码的对话框..

您还需要root设备,以实现隐藏系统栏 - 以防止用户访问设置。隐藏状态栏有点棘手,需要运行linux命令。例如,在蜂窝中你可以这样做 - http://android.serverbox.ch/?p=306

内置的默认启动器与stock-rom一起提供此类功能,但我相信您可以在Google Play中找到一些提供此类功能的自定义启动器。安装启动器并重新启动设备后 - 您可以将其定义为默认启动器 - 即使您的孩子将重新启动设备,他们也只能访问自定义启动器。

作为Android开发人员,如果没有人开发此类启动器,我会感到非常惊讶,因为对于开发启动应用程序的人来说,这是一个非常简单的开发功能。

答案 1 :(得分:0)

如果你想在孩子不知情的情况下这样做,你可以不时检查他/她手机中安装的应用程序并卸载不需要的应用程序。请参阅Install apps silently, with granted INSTALL_PACKAGES permission中接受的答案。您应该使用设备系统证书签署您的应用程序。

答案 2 :(得分:0)

从Android Lollipop(5)开始,DevicePolicyManager API允许profile owner管理员或device owner管理员隐藏和阻止卸载托管应用程序。 将您的管理应用程序配置为配置文件所有者或设备所有者后,请使用以下API:

  • setUninstallBlocked:这允许定义无法从设备中删除的包名称。只有配置文件/设备所有者才能启用/禁用此标志。
  • setApplicationHidden:这允许定义一个将被隐藏的包名称,这意味着它将完全禁用并将从启动器中消失。请注意,隐藏应用程序不会将其卸载,管理员可以随时取消隐藏它并使用其所有用户数据完全恢复应用程序。

对于配置文件所有者admin,这两个API仅适用于配置文件管理的即时应用程序(在设置工作配置文件后,大多数应用程序都被克隆并具有2个实例 - 用户即时和配置文件即时)。

共享系统uid(android:sharedUserId="android.uid.system")的系统应用程序可以通过直接调用IPackageManager interfaces而无需个人资料/设备所有者即可使用相同的功能。

答案 3 :(得分:-1)

是的,可以通过编程方式执行此操作。您可以使用以下代码执行此操作。 安装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);

希望它会对你有所帮助。谢谢。