[英]Detect devices running MDM (mobile device management)
我有一個功能,可以在舊的應用程序版本中彈出應用程序更新提示對話框(該版本通過Firebase遠程配置進行控制)。
然而,結果很多(但不是大多數)我的客戶使用MDM來鎖定他們的手機,在這種情況下,最終用戶無法直接更新應用程序。
我正在使用intent.resolveActivity(packageManager)的正常檢測來檢查是否可以在顯示對話框之前啟動Play商店活動。 但該檢查通過 - Play商店就在那里,但更新被阻止。
我想為這些最終用戶禁用更新提示。
有沒有辦法檢測MDM? 或者至少是一種檢測應用更新被阻止的方法?
您可以使用UserManager:
UserManager user_manager = (UserManager) getSystemService(Context.USER_SERVICE);
if (user_manager.hasUserRestriction("WORK_PROFILE_RESTRICTION")) {
System.out.print("app under MDM");
} else {
System.out.print("app not under MDM");
}
雖然如果管理員沒有設置該值,您將收到錯誤。 如果你成功了,那就意味着你肯定屬於托管檔案,但如果你弄錯了,那就可能是假陰性。
Test DPC google示例包含一個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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.