# EnterpriseAdminExtensionAbility ## EnterpriseAdminExtensionAbility简介 ä¼ä¸šè®¾å¤‡ç®¡ç†æ‰©å±•能力,是MDM(Mobile Device Management)应用必备组件。当开å‘者为ä¼ä¸šå¼€å‘MDM应用时,需继承EnterpriseAdminExtensionAbility,在EnterpriseAdminExtensionAbility实例ä¸å®žçްMDM业务逻辑,EnterpriseAdminExtensionAbility实现了系统管ç†çжæ€å˜åŒ–通知功能,并定义了管ç†åº”用激活ã€åŽ»æ¿€æ´»ã€åº”用安装ã€å¸è½½äº‹ä»¶ç‰å›žè°ƒæŽ¥å£ã€‚ ## 约æŸä¸Žé™åˆ¶ 仅支æŒè®¾å¤‡ç®¡ç†å‘˜åº”用使用。 ## 场景:监å¬è®¾å¤‡ç®¡ç†å™¨æ¿€æ´»ã€åŽ»æ¿€æ´»ã€åº”用安装ã€å¸è½½äº‹ä»¶ ### 概述 onAdminEnabled:由ä¼ä¸šç®¡ç†å‘˜æˆ–者员工部署MDM应用,激活设备管ç†å™¨ï¼Œç³»ç»Ÿé€šçŸ¥MDM应用已激活DeviceAdminæƒé™ã€‚MDM应用å¯åœ¨onAdminEnabled回调函数ä¸è¿›è¡Œåˆå§‹åŒ–ç–略设置。 onAdminDisabled:由系统或者员工去激活设备管ç†å™¨ï¼Œé€šçŸ¥åŽ»æ¿€æ´»DeviceAdminæƒé™ï¼Œåº”用å¯ä»¥é€šçŸ¥ä¼ä¸šç®¡ç†å‘˜è®¾å¤‡å·²è„±ç®¡ã€‚ onBundleAdded: ä¼ä¸šåº”用管ç†åœºæ™¯ä¸‹ï¼Œä¼ä¸šç®¡ç†å‘˜è®¢é˜…应用安装事件,端侧应用安装和å¸è½½äº‹ä»¶é€šçŸ¥MDM应用,MDM应用å¯ä»¥åœ¨å›žè°ƒå‡½æ•°ä¸è¿›è¡Œäº‹ä»¶ä¸ŠæŠ¥ï¼Œé€šçŸ¥ä¼ä¸šç®¡ç†å‘˜ã€‚ onBundleRemoved: ä¼ä¸šåº”用管ç†åœºæ™¯ä¸‹ï¼Œä¼ä¸šç®¡ç†å‘˜è®¢é˜…应用å¸è½½äº‹ä»¶ï¼Œç«¯ä¾§åº”用安装和å¸è½½äº‹ä»¶é€šçŸ¥MDM应用,MDM应用å¯ä»¥åœ¨å›žè°ƒå‡½æ•°ä¸è¿›è¡Œäº‹ä»¶ä¸ŠæŠ¥ï¼Œé€šçŸ¥ä¼ä¸šç®¡ç†å‘˜ã€‚ ### 接å£è¯´æ˜Ž | ç±»å | 接å£åç§° | æè¿° | | :------------------------------ | ----------------------------------------- | ---------------------------- | | EnterpriseAdminExtensionAbility | onAdminEnabled(): void | 设备管ç†å™¨åº”用激活回调方法 | | EnterpriseAdminExtensionAbility | onAdminDisabled(): void | 设备管ç†å™¨åº”用去激活回调方法 | | EnterpriseAdminExtensionAbility | onBundleAdded(bundleName: string): void | 应用安装回调方法 | | EnterpriseAdminExtensionAbility | onBundleRemoved(bundleName: string): void | 应用å¸è½½å›žè°ƒæ–¹æ³• | ### 开呿¥éª¤ 1. 在工程Module对应的ets目录下,å³é”®é€‰æ‹©â€œNew > Directoryâ€ï¼Œæ–°å»ºä¸€ä¸ªç›®å½•并命å为EnterpriseExtAbility。 2. 在EnterpriseExtAbility目录,å³é”®é€‰æ‹©â€œNew > ArkTS Fileâ€ï¼Œæ–°å»ºä¸€ä¸ªæ–‡ä»¶å¹¶å‘½å为EnterpriseExtAbility.ets。 3. 打开EnterpriseExtAbility.ets文件,导入EnterpriseAdminExtensionAbility模å—,自定义类继承EnterpriseAdminExtensionAbilityå¹¶åŠ ä¸Šéœ€è¦çš„应用通知回调方法,如onAdminEnabled()ã€onAdminDisabled()ç‰å›žè°ƒæ–¹æ³•。当设备管ç†å‘˜åº”用被激活或者去激活时,则å¯ä»¥åœ¨å¯¹åº”å›žè°ƒæ–¹æ³•ä¸æŽ¥å—系统å‘é€é€šçŸ¥ã€‚ ```ts import EnterpriseAdminExtensionAbility from '@ohos.enterprise.EnterpriseAdminExtensionAbility'; export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility { onAdminEnabled() { console.info("onAdminEnabled"); } onAdminDisabled() { console.info("onAdminDisabled"); } onBundleAdded(bundleName: string) { console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName); } onBundleRemoved(bundleName: string) { console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName); } }; ``` ​ 4.在工程Module对应的[module.json5](../quick-start/module-configuration-file.md)é…ç½®æ–‡ä»¶ä¸æ³¨å†ŒServiceExtensionAbility,typeæ ‡ç¾éœ€è¦è®¾ç½®ä¸ºâ€œenterpriseAdminâ€ï¼ŒsrcEntryæ ‡ç¾è¡¨ç¤ºå½“å‰ExtensionAbility组件所对应的代ç 路径。 ```json "extensionAbilities": [ { "name": "ohos.samples.enterprise_admin_ext_ability", "type": "enterpriseAdmin", "exported": true, "srcEntry": "./ets/enterpriseextability/EnterpriseAdminAbility.ets" } ] ``` ## 使用示例 通过@ohos.enterprise.adminManager模å—ä¸çš„subscribeManagedEvent接å£è¿›è¡Œä¼ä¸šè®¾å¤‡ç®¡ç†äº‹ä»¶çš„订阅,订阅应用安装ã€å¸è½½äº‹ä»¶ã€‚当订阅æˆåŠŸåŽï¼Œç«¯ä¾§åº”用安装和å¸è½½äº‹ä»¶é€šçŸ¥MDM应用,MDM应用å¯ä»¥åœ¨å›žè°ƒå‡½æ•°ä¸è¿›è¡Œäº‹ä»¶ä¸ŠæŠ¥ï¼Œé€šçŸ¥ä¼ä¸šç®¡ç†å‘˜ã€‚å¹¶å¯ä»¥é€šè¿‡unsubscribeManagedEvent接å£è¿›è¡Œä¼ä¸šè®¾å¤‡ç®¡ç†äº‹ä»¶çš„去订阅。 ```ts import adminManager from '@ohos.enterprise.adminManager'; import Want from '@ohos.app.ability.Want'; import { BusinessError } from '@ohos.base'; async function subscribeManagedEventCallback() { let admin: Want = { bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', } adminManager.subscribeManagedEvent(admin, [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED, adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED], (error) => { if (error) { console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`); } else { console.log('Succeeded in subscribing managed event'); } }) } async function unsubscribeManagedEventPromise() { let admin: Want = { bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', } await adminManager.unsubscribeManagedEvent(admin, [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED, adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED]).then(() => { console.log('Succeeded in subscribing managed event'); }).catch((error: BusinessError) => { console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`); }) } ``` ## 相关实例 针对EnterpriseAdminExtensionAbilityå¼€å‘,有以下相关示例å¯ä¾›å‚考: - [ä¼ä¸šè®¾å¤‡ç®¡ç†æ‰©å±•(ArkTS)(Full SDK)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SystemFeature/ApplicationModels/EnterpriseAdminExtensionAbility)