android - 检测运行 MDM(移动设备管理)的设备

标签 android mdm

我有一个功能可以在旧的应用程序版本中弹出一个应用程序更新提示对话框(该版本是通过 Firebase 远程配置控制的)。

然而,我的很多(但不是大多数)客户使用 MDM 来锁定他们的手机,在这种情况下,最终用户无法直接更新应用。

我正在使用 intent.resolveActivity(packageManager) 的正常检测来检查是否可以在显示对话框之前启动 play store Activity 。但该检查通过了 - Play 商店在那里,但更新被阻止。

我想为这些最终用户禁用更新提示。

有没有办法检测 MDM?或者至少是一种检测应用更新已被阻止的方法?

最佳答案

Test DPC google sample包含 ProvisioningStateUtil使用一些实用方法:

/**
 * @return true if the device or profile is already owned
 */
public static boolean isManaged(Context context) {
    DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(
            Context.DEVICE_POLICY_SERVICE);

    List<ComponentName> admins = devicePolicyManager.getActiveAdmins();
    if (admins == null) return false;
    for (ComponentName admin : admins) {
        String adminPackageName = admin.getPackageName();
        if (devicePolicyManager.isDeviceOwnerApp(adminPackageName)
                || devicePolicyManager.isProfileOwnerApp(adminPackageName)) {
            return true;
        }
    }

    return false;
}

这至少需要 Android 5.0 (API 21)

您也可以直接检查当前用户是否允许安装或更新应用程序:

UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
boolean blocked = userManager.hasUserRestriction(UserManager.DISALLOW_INSTALL_APPS);

它还需要 API 21

关于android - 检测运行 MDM(移动设备管理)的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213047/

相关文章:

java - 弹回球安卓

android - 具有自定义布局的 ListFragment : empty message always displayed

WSO2 MDM 配置 : certificate problems

android - 单击运行时 Eclipse 不运行 android 应用程序

android - 如何检测 Android ListView 中的过度滚动?

android - 我可以在自定义布局中显示图像吗?

ios - iOS SDK 中的 MDM 配置文件安装失败

ios - iOS MDM 操作中的证书内容

python - 未能创建 android 管理注册 URL

ios - 如何从通过 SCEP 创建的 iOS 设备中删除证书/ key