簡體   English   中英

檢測運行MDM的設備(移動設備管理)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM