簡體   English   中英

是否可以在 Android Lollipop 中擁有不同時存在的“Profile Owner”應用程序

[英]Is it possible to have a “Profile Owner” app in Android Lollipop that is not co-present

Lollipop API 提供了 2 個新功能“配置文件所有者”和“設備所有者”( http://developer.android.com/about/versions/android-5.0.html#Enterprise )。 在它們之間,它們僅提供我需要的應用程序功能,父母可以用它來控制孩子的設備活動。 每個的設置流程是:

設備所有者

在設備設置期間,使用 NFC,您可以告訴 Android 您希望您的應用成為設備所有者。 然后,Android 從 URL 下載應用程序,設備被加密並作為設備所有者使用該應用程序進行配置。 因此,對於從 Google Play 安裝我的應用程序的人,我需要該應用程序提示他們將設備恢復出廠設置,然后在另一台設備上安裝另一個應用程序,然后通過 NFC 將它們碰撞在一起。 隨着設置流程的進行,這遠非理想。 但是一旦設置完畢,設備所有者 API 就會為此用例提供非常豐富的功能集。

個人資料所有者

對此的設置更直接一些:用戶從 Google Play 安裝應用程序,然后可以提示為應用程序授予個人資料所有者權限。 如果用戶同意,該設備將由 Android 加密,並且在重新啟動后,該設備具有 2 個使用相同啟動器(主屏幕)的“共同呈現”配置文件。 設置可能更直接,但最終結果並不是我真正需要的,因為應用程序只能控制托管配置文件下的應用程序。

所以我想我實際上有兩個問題:是否可以制作一個控制整個用戶配置文件的配置文件所有者應用程序,即不是共同存在的托管配置文件? 或者是否可以使用更簡單的設置流程制作一個設備所有者應用程序,不需要恢復出廠設置和 NFC 碰撞(生根不是一個選項)? 兩種方法之間的一些中間立場將是理想的。

答案(1):托管配置文件作為單獨的角色工作,配置文件下的所有應用程序都是不同的(它們是不同的獨立應用程序實例),類似於新用戶。 配置文件所有者是托管配置文件的所有者應用程序,因此與設備所有者相比,它沒有太多的權力和功能,因此它無法控制整個用戶配置文件。

答案 (2):要創建設備所有者,必須使用 NFC 方法,因為一旦您的設備設置完畢,它就會被配置,之后您就不能將您的應用程序設為設備所有者(除非您使用生根方法)。 您可以按照給定的鏈接制作設備所有者

1) 使用 NFC 創建設備所有者

2) 生根

是否可以制作一個控制整個用戶配置文件的配置文件所有者應用程序,即不是共同呈現的托管配置文件?

ACTION_PROVISION_MANAGED_PROFILE

配置文件所有者應用通過發送帶有操作 DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE 的意圖來創建托管配置文件。 (來源。)

讓我們打開DevicePolicyManager.java

ACTION_PROVISION_MANAGED_PROFILE 的 Javadoc 注釋說:

/**
 * ... Starts the provisioning flow which sets up a managed profile.
 * ...
 * ... The user which provisioning is started from and
 * the managed profile share a launcher. ...
 */

所以 ACTION_PROVISION_MANAGED_PROFILE 可能無濟於事。

嗯。

ACTION_PROVISION_MANAGED_USER

該文件中唯一看起來可能有幫助的其他操作是 ACTION_PROVISION_MANAGED_USER。

讓我們看看 Javadoc 注釋。 它說:

/**
 * ... Starts the provisioning flow which sets up a managed user.
 * ...
 * This intent will typically be sent by a mobile device management application (MDM).
 * Provisioning configures the user as managed user and sets the MDM as the profile
 * owner who has full control over the user.

偉大的! 有什么問題?

 * ... Provisioning can only happen before user setup has
 * been completed. ...
 */

哦。 :( 因此,如果您的設備沒有root,我認為您必須在恢復出廠設置后和安裝向導完成之前以某種方式安裝您的個人資料所有者應用程序。

邊注

我看了某個白皮書的第 13 頁 它說:“在托管配置過程中,稱為 ACTION_PROVISION_MANAGED_PROFILE 的意圖被調用。如果用戶有一個預先存在的個人帳戶,托管配置文件是單獨的,但同時存在。” 在我看來,這意味着,如果您在沒有用戶帳戶的設備上調用 ACTION_PROVISION_MANAGED_PROFILE,您的應用程序可能會控制整個用戶配置文件。 但同樣,我想您必須在恢復出廠設置后以及安裝向導完成之前以某種方式安裝您的個人資料所有者應用程序。

做你想做的

我認為你想要的遺憾是不可能的。 如果需要,您可以針對 Android 提交功能請求並要求他們使其成為可能。 如果您這樣做,請在下方留下評論,並附上功能請求的 URL。 如果您沒有足夠的聲望點數來發表評論,請通過gmail.com tealhill給我發送電子郵件,並讓我代表您發表評論。

解決方法

我的理論是,一個可能的解決方法可能是讓您的應用程序下載並啟動一個以手機為根的第三方應用程序。 大多數手機都可以root。 手機root后,您的應用程序就可以成為設備所有者。 之后,也許您的應用程序可以取消手機的root 並仍然是設備所有者。 或者可能不是。 我不知道。

如果您的應用無法取消手機的 root 權限,或者沒有嘗試,手機將永遠保持 root 權限。 這可能存在安全風險。 您可能應該警告用戶。

正如正確所說,設備上只能有 1 個設備所有者,但設備上可以有多個配置文件所有者。 每個配置文件所有者將激活 1 個用戶。

這可以通過在 DevicePolicyManager 中調用 createAndInitializeUser api 來實現。

http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#createAndInitializeUser%28android.content.ComponentName,%20java.lang.String,%20java.lang.String,%20android.content.ComponentName ,%20android.os.Bundle%29

我能夠創建多個配置文件所有者,但仍在努力找出是否有辦法讓設備所有者與配置文件所有者交談。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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