我有一个功能可以在旧的应用程序版本中弹出一个应用程序更新提示对话框(该版本是通过 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/