android11 DevicePolicyManager淺析

目錄

📘 簡單定義

📘應用啟用設備管理者

📂 文件位置

🧠 DevicePolicyManager 功能分類舉例

🛡? 1. 安全策略控制

📷 2. 控制硬件功能

🧰 3. 應用管理

🔒 4. 用戶管理

📦 5. 文件與存儲控制

🌐 6. 網絡配置管理(DO 模式)

🧪 7. 企業功能(僅設備所有者)

🧩 8. Kiosk 模式(鎖定應用)

🧯 9. 恢復出廠 / 擦除用戶數據

📥 10. 通知和系統設置控制

🛑 權限與前提條件

📚 總結表格


Android 11(R) 中,DevicePolicyManager.java 是系統框架中的一個核心類,它提供了設備策略管理接口,允許**設備管理員(Device Admin)或設備擁有者(Device Owner)**對 Android 設備的行為、安全性和功能進行控制和限制。


📘 簡單定義

DevicePolicyManager 是 Android 提供的 API 類(位于 android.app.admin.DevicePolicyManager),用于對設備進行企業級管理,比如:強制密碼、安全鎖、禁用功能、擦除數據、控制 app 等。


📘應用啟用設備管理者

public void enableDeviceOwner(Activity activity) {DevicePolicyManager mDPM = (DevicePolicyManager) activity.getSystemService (Context.DEVICE_POLICY_SERVICE);ComponentName testDeviceAdmin = new ComponentName ("com.xx.pkg", "com.xx.pkg.receiver.MyAdmin");boolean adminActive = mDPM.isAdminActive (testDeviceAdmin);if (!adminActive) {Intent intent = new Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra (DevicePolicyManager.EXTRA_DEVICE_ADMIN, testDeviceAdmin);intent.putExtra (DevicePolicyManager.EXTRA_ADD_EXPLANATION, "");activity.startActivityForResult (intent, REQUEST_ACTIVATE);}
}public class MyAdmin extends DeviceAdminReceiver {private static final String TAG=MyAdmin.class.getSimpleName();@Overridepublic void onReceive(@NonNull Context context, @NonNull Intent intent) {super.onReceive (context, intent);String action = intent.getAction();Log.d(TAG,"action="+action);}@Overridepublic void onEnabled(Context context, Intent intent) {Log.d (TAG, "onEnabled: 設備管理器已啟用");}@Overridepublic void onDisabled(Context context, Intent intent) {Log.d (TAG, "onDisabled: 設備管理器已禁用");}@Overridepublic void onPasswordChanged(@NonNull Context context, @NonNull Intent intent) {super.onPasswordChanged (context, intent);Log.d (TAG, "onPasswordChanged: 密碼改變");}@Overridepublic void onPasswordFailed(@NonNull Context context, @NonNull Intent intent) {super.onPasswordFailed (context, intent);Log.d (TAG, "onPasswordFailed: 密碼嘗試失敗");}@Overridepublic void onPasswordExpiring(@NonNull Context context, @NonNull Intent intent) {super.onPasswordExpiring (context, intent);Log.d (TAG, "onPasswordExpiring: 密碼過期");}
}

📂 文件位置

源碼路徑(AOSP Android 11):

frameworks/base/core/java/android/app/admin/DevicePolicyManager.java

這個類實際上是一個系統服務的 Client API,對應的系統服務是:

DevicePolicyManagerService.java 位置:frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java


🧠 DevicePolicyManager 功能分類舉例

以下是所有主要功能 + 示例代碼(或行為描述)👇:


🛡? 1. 安全策略控制

功能描述示例
強制鎖屏密碼設置密碼類型、長度setPasswordQuality(), setPasswordMinimumLength()
設置鎖屏超時設置自動鎖屏時間setMaximumTimeToLock()
設置錯誤密碼嘗試次數限制輸錯密碼后擦除數據setMaximumFailedPasswordsForWipe()
主動鎖屏立即鎖屏設備lockNow()
清除數據恢復出廠設置wipeData()

📷 2. 控制硬件功能

功能示例方法行為
禁用攝像頭setCameraDisabled()不可使用前后攝像頭
禁用屏幕截圖setScreenCaptureDisabled()無法截圖或錄屏
控制麥克風setMicrophoneDisabled()禁止錄音
限制 USBsetUsbDataSignalingEnabled()(僅系統)禁止 USB 數據傳輸
禁用 Wi-Fi / 藍牙(DO 模式)addUserRestriction() + UserManager.DISALLOW_WIFI限制連接無線功能

🧰 3. 應用管理

功能方法描述
安裝/卸載 app(靜默)installExistingPackage()setApplicationHidden()無用戶干預地安裝/隱藏 app(需系統權限)
禁用 appsetApplicationBlocked()阻止某些 app 使用
清除 app 數據clearApplicationUserData()清除指定應用的數據
查詢包管理策略isPackageSuspended()isApplicationHidden()查詢 app 狀態

🔒 4. 用戶管理

功能方法描述
添加/刪除用戶createAndManageUser()創建受管理用戶
禁止添加賬戶addUserRestriction() + DISALLOW_MODIFY_ACCOUNTS禁止添加 Google 或其他賬戶
限制切換用戶DISALLOW_USER_SWITCH限制用戶切換操作
限制 factory resetDISALLOW_FACTORY_RESET防止被用戶手動恢復出廠

📦 5. 文件與存儲控制

功能方法描述
啟用存儲加密setStorageEncryption()要求磁盤加密
清除安全日志retrieveSecurityLogs()獲取審計日志(僅設備擁有者)
控制外部存儲訪問DISALLOW_MOUNT_PHYSICAL_MEDIA阻止訪問 SD 卡

🌐 6. 網絡配置管理(DO 模式)

功能方法描述
配置 Wi-FisetGlobalSetting() / setWifiSsidPolicy()設置設備 Wi-Fi 策略
限制 VPN 設置DISALLOW_CONFIG_VPN阻止用戶配置 VPN
配置代理使用 DevicePolicyManagerService 中間件或自定義網絡策略控制企業網絡行為

🧪 7. 企業功能(僅設備所有者)

功能方法描述
設置企業徽標setOrganizationColor(), setOrganizationName()設置工作資料顯示名稱/顏色
控制主屏幕布局setAffiliationIds()限制主界面自定義
設置默認主屏setLockTaskPackages()限制 app 之間切換(Kiosk 模式)

🧩 8. Kiosk 模式(鎖定應用)

功能方法描述
設置鎖定應用setLockTaskPackages()只允許使用特定 app
啟動鎖定模式startLockTask()類似自助機、展示設備的封閉式體驗
停止鎖定模式stopLockTask()恢復正常狀態

🧯 9. 恢復出廠 / 擦除用戶數據

功能方法描述
清除所有數據wipeData()直接恢復出廠設置
僅清除工作資料clearProfileOwner()用于企業環境清除公司數據

📥 10. 通知和系統設置控制

功能方法描述
限制通知欄DISALLOW_STATUS_BAR(系統)阻止下拉通知欄
禁用輸入法切換DISALLOW_CONFIG_INPUT_METHODS固定使用某輸入法
控制亮度/音量結合 Settings.System 權限改變系統設置值

🛑 權限與前提條件

模式功能范圍
Device Admin(舊)受限功能(Android 10 及后續限制更多)
Device Owner(推薦)全功能,包括用戶和系統控制
Profile Owner(工作資料)只控制企業工作區(BYOD)
系統 app + 簽名可靜默激活、訪問私有 API、更強控制

📚 總結表格

功能類別示例功能
安全策略密碼規則、鎖屏、擦除數據
硬件控制相機、錄音、USB、截圖禁用
應用管理安裝/隱藏/卸載/限制 app
網絡管理限制 Wi-Fi/VPN、設置代理
企業特性設置工作資料、品牌信息、默認主屏
用戶管理添加用戶、限制賬戶、Kiosk 模式
存儲加密啟用設備加密、審計日志獲取
恢復出廠恢復出廠、清除企業數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76967.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76967.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76967.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java學習手冊:Java線程安全與同步機制

在Java并發編程中,線程安全和同步機制是確保程序正確性和數據一致性的關鍵。當多個線程同時訪問共享資源時,如果不加以控制,可能會導致數據不一致、競態條件等問題。本文將深入探討Java中的線程安全問題以及解決這些問題的同步機制。 線程安…

PyTorch核心函數詳解:gather與where的實戰指南

PyTorch中的torch.gather和torch.where是處理張量數據的關鍵工具,前者實現基于索引的靈活數據提取,后者完成條件篩選與動態生成。本文通過典型應用場景和代碼演示,深入解析兩者的工作原理及使用技巧,幫助開發者提升數據處理的靈活…

聲學測溫度原理解釋

已知聲速,就可以得到溫度。 不同溫度下的勝訴不同。 25度的聲速大約346m/s 絕對溫度-273度 不同溫度下的聲速。 FPGA 通過測距雷達測溫度,固定測量距離,或者可以測出當前距離。已知距離,然后雷達發出聲波到接收到回波的時間&a…

【網絡篇】UDP協議的封裝分用全過程

大家好呀 我是浪前 今天講解的是網絡篇的第二章:UDP協議的封裝分用 我們的協議最開始是OSI七層網絡協議 這個OSI 七層網絡協議 是計算機的大佬寫的,但是這個協議一共有七層,太多了太麻煩了,于是我們就把這個七層網絡協議就簡化為…

spring-ai-alibaba使用Agent實現智能機票助手

示例目標是使用 Spring AI Alibaba 框架開發一個智能機票助手,它可以幫助消費者完成機票預定、問題解答、機票改簽、取消等動作,具體要求為: 基于 AI 大模型與用戶對話,理解用戶自然語言表達的需求支持多輪連續對話,能…

嵌入式C語言高級編程:OOP封裝、TDD測試與防御性編程實踐

一、面向對象編程(OOP) 盡管 C 語言并非面向對象編程語言,但借助一些編程技巧,也能實現面向對象編程(OOP)的核心特性,如封裝、繼承和多態。 1.1 封裝 封裝是把數據和操作數據的函數捆綁在一起,對外部隱藏…

藍橋杯 web 常考到的一些知識點

filter:filter方法創建一個新數組,其包含通過所提供函數實現的測試的所有元素。這個 方法不會改變原數組,而是返回一個新的數組。 map:map方法創建一個新數組,其結果是該數組中的每個元素都調用一個提供的函數后的 返回…

音視頻小白系統入門筆記-0

本系列筆記為博主學習李超老師課程的課堂筆記&#xff0c;僅供參閱 音視頻小白系統入門課 音視頻基礎ffmpeg原理 緒論 ffmpeg推流 ffplay/vlc拉流 使用rtmp協議 ffmpeg -i <source_path> -f flv rtmp://<rtmp_server_path> 為什么會推流失敗&#xff1f; 默認…

mysql按條件三表并聯查詢

下面為你呈現一個 MySQL 按條件三表并聯查詢的示例。假定有三個表&#xff1a;students、courses 和 enrollments&#xff0c;它們的結構和關聯如下&#xff1a; students 表&#xff1a;包含學生的基本信息&#xff0c;有 student_id 和 student_name 等字段。courses 表&…

UML之序列圖的消息

序列圖表現各參與者之間為完成某個行為而發生的交互及其時間順序&#xff0c;序列圖中的交互通過消息實現。消息是從一條生命線到另一條生命線的通信&#xff0c;它們通常是水平或傾斜向下的箭頭&#xff0c;從發送方生命線離開&#xff0c;到達接收方生命線。如果需要&#xf…

UniAD:自動駕駛的統一架構 - 創新與挑戰并存

引言 自動駕駛技術正經歷一場架構革命。傳統上&#xff0c;自動駕駛系統采用模塊化設計&#xff0c;將感知、預測和規劃分離為獨立組件。而上海人工智能實驗室的OpenDriveLab團隊提出的UniAD&#xff08;Unified Autonomous Driving&#xff09;則嘗試將這些任務整合到一個統一…

如何寫好合同管理系統需求分析

引言 在當今企業數字化轉型的浪潮中&#xff0c;合同管理系統作為企業法律合規和商業運營的重要支撐工具&#xff0c;其需求分析的準確性和完整性直接關系到系統建設的成敗。本文基于Volere需求過程方法論&#xff0c;結合江鈴汽車集團合同管理系統需求規格說明書實踐案例&…

libevent服務器附帶qt界面開發(附帶源碼)

本章是入門章節&#xff0c;講解如何實現一個附帶界面的服務器&#xff0c;后續會完善與優化 使用qt編譯libevent源碼演示視頻qt的一些知識 1.主要功能有登錄界面 2.基于libevent實現的服務器的業務功能 使用qt編譯libevent 下載這個&#xff0c;其他版本也可以 主要是github上…

八、自動化函數

1.元素的定位 web自動化測試的操作核心是能夠找到頁面對應的元素&#xff0c;然后才能對元素進行具體的操作。 常見的元素定位方式非常多&#xff0c;如id,classname,tagname,xpath,cssSelector 常用的主要由cssSelector和xpath 1.1 cssSelector選擇器 選擇器的功能&#x…

Web三漏洞學習(其二:sql注入)

靶場&#xff1a;NSSCTF 、云曦歷年考核題 二、sql注入 NSSCTF 【SWPUCTF 2021 新生賽】easy_sql 這題雖然之前做過&#xff0c;但為了學習sql&#xff0c;整理一下就再寫一次 打開以后是杰哥的界面 注意到html網頁標題的名稱是 “參數是wllm” 那就傳參數值試一試 首先判…

單片機非耦合業務邏輯框架

在小型單片機項目開發初期&#xff0c;由于業務邏輯相對簡單&#xff0c;我們往往較少關注程序架構層面的設計。 然而隨著項目經驗的積累&#xff0c;開發者會逐漸意識到模塊間的耦合問題&#xff1a;當功能迭代時&#xff0c;一處修改可能引發連鎖反應。 此時&#xff0c;構…

Zookeeper三臺服務器三節點集群部署(docker-compose方式)

1. 準備工作 - 服務器:3 臺服務器,IP 地址分別為 `10.10.10.11`、`10.10.10.12`、`10.10.10.13`。 - 安裝 Docker:確保每臺服務器已安裝 Docker 和 Docker Compose。 - 網絡通信:確保三臺服務器之間可以通過 IP 地址互相訪問,并開放以下端口: - `2181`:Zookeeper 客戶…

Mac關閉sip方法

Mac關閉sip方法 導航 文章目錄 Mac關閉sip方法導航完整操作流程圖詳細步驟 完整操作流程圖 這東西是我在網上搬運下來的&#xff0c;但是我在為業務實操過程中&#xff0c;根據實操情況還是有新的注意點的 詳細步驟 1.在「關于本機」-「系統報告」-「軟件」;查看SIP是否開啟…

C++| 深入剖析std::list底層實現:鏈表結構與內存管理機制

引言 std::list的底層實現基于雙向鏈表&#xff0c;其設計哲學與std::vector截然不同。本文將深入探討其節點結構、內存分配策略及迭代器實現原理&#xff0c;揭示鏈表的性能優勢和潛在代價。 1. 底層數據結構&#xff1a;雙向鏈表 每個std::list節點包含&#xff1a; 數據域…

漢諾塔問題——用貪心算法解決

目錄 一&#xff1a;起源 二&#xff1a;問題描述 三&#xff1a;規律 三&#xff1a;解決方案 遞歸算法 四&#xff1a;代碼實現 復雜度分析 一&#xff1a;起源 漢諾塔&#xff08;Tower of Hanoi&#xff09;問題起源于一個印度的古老傳說。在世界中心貝拿勒斯&#…