【问题标题】:How to programmatically prevent Install/Uninstall of applications in android?如何以编程方式防止在android中安装/卸载应用程序?
【发布时间】:2012-12-15 09:54:59
【问题描述】:

是否可以以编程方式阻止在 android 中安装/卸载应用程序?如果可能的话,我该如何为我的儿童应用程序执行此操作。我无法获得有用的答案。非常感谢任何帮助。

提前致谢

【问题讨论】:

    标签: android uninstallation


    【解决方案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);
    

    希望对您有所帮助。谢谢。

    【讨论】:

      【解决方案2】:

      没有 API 可以做这样的事情

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

      Android - creating custom launcher,并以此限制用户只能看到或做你想做的事情。例如 - 当您实现显示所有应用程序的主屏幕时 - 当您实现卸载功能时 - 打开一些对话框要求输入密码..

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

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


          共享系统 uid (android:sharedUserId="android.uid.system") 的系统应用程序可以通过直接调用 IPackageManager interfaces 来使用相同的功能,而无需成为配置文件/设备所有者。

          【讨论】:

            猜你喜欢
            • 2015-05-01
            • 1970-01-01
            • 2019-08-05
            • 1970-01-01
            • 2012-12-12
            • 2012-03-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多