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

kos*_*kos 4 android mdm

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

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

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

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

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

bwt*_*bwt 5

测试DPC谷歌样品含有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;
}
Run Code Online (Sandbox Code Playgroud)

这至少需要 Android 5.0 (API 21)

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

UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
boolean blocked = userManager.hasUserRestriction(UserManager.DISALLOW_INSTALL_APPS);
Run Code Online (Sandbox Code Playgroud)

它还需要 API 21