// 定义U盘插拔事件的监听器
export default class UsbEventListener {
  private subscriber: commonEventManager.CommonEventSubscriber | null = null;

  // 订阅U盘插拔事件
  subscribeUsbEvents() {
    const subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
      events: [
        'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED',
        'usual.event.hardware.usb.action.USB_DEVICE_DETACHED'
      ]
    };
    // 创建订阅者
    commonEventManager.createSubscriber(subscribeInfo,
      (err: BusinessError, subscriber: commonEventManager.CommonEventSubscriber) => {
        if (err) {
          console.error(`Failed to create subscriber. Code: ${err.code}, message: ${err.message}`);
          return;
        }
        this.subscriber = subscriber;
        // 订阅事件
        commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEventManager.CommonEventData) => {
          if (err) {
            console.error(`Failed to subscribe event. Code: ${err.code}, message: ${err.message}`);
            return;
          }
          console.error(data.event);
          // 获取连接的USB设备信息
          if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED') {
            console.info('U 盘已插入');
            this.handleUsbAttached();
          } else if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_DETACHED') {
            console.info('U 盘已拔出');
            this.handleUsbDetached();
          }
        });
      });
  }

  // 处理U盘插入事件
  private handleUsbAttached() {
    console.info('处理 U 盘插入逻辑');
  }

  // 处理U盘拔出事件
  private handleUsbDetached() {
    console.info('处理 U 盘拔出逻辑');
  }

  // 取消订阅
  unsubscribeUsbEvents() {
    if (this.subscriber) {
      commonEventManager.unsubscribe(this.subscriber, (err: BusinessError) => {
        if (err) {
          console.error(`Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);
          return;
        }
        console.info('已取消订阅 U 盘插拔事件');
      });
    }
  }
}
import { BusinessError } from '@ohos.base';
import commonEventManager from '@ohos.commonEventManager';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  private usbListener: UsbEventListener = new UsbEventListener();

  aboutToAppear() {
    this.usbListener.subscribeUsbEvents();
  }

  aboutToDisappear() {
    this.usbListener.unsubscribeUsbEvents();
  }

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome';
        })
    }
    .height('100%')
    .width('100%')
  }
}

// 定义U盘插拔事件的监听器
export default class UsbEventListener {
  private subscriber: commonEventManager.CommonEventSubscriber | null = null;

  // 订阅U盘插拔事件
  subscribeUsbEvents() {
    const subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
      events: [
        'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED',
        'usual.event.hardware.usb.action.USB_DEVICE_DETACHED'
      ]
    };
    // 创建订阅者
    commonEventManager.createSubscriber(subscribeInfo,
      (err: BusinessError, subscriber: commonEventManager.CommonEventSubscriber) => {
        if (err) {
          console.error(`Failed to create subscriber. Code: ${err.code}, message: ${err.message}`);
          return;
        }
        this.subscriber = subscriber;
        // 订阅事件
        commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEventManager.CommonEventData) => {
          if (err) {
            console.error(`Failed to subscribe event. Code: ${err.code}, message: ${err.message}`);
            return;
          }
          console.error(data.event);
          // 获取连接的USB设备信息
          if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED') {
            console.info('U 盘已插入');
            this.handleUsbAttached();
          } else if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_DETACHED') {
            console.info('U 盘已拔出');
            this.handleUsbDetached();
          }
        });
      });
  }

  // 处理U盘插入事件
  private handleUsbAttached() {
    console.info('处理 U 盘插入逻辑');
  }

  // 处理U盘拔出事件
  private handleUsbDetached() {
    console.info('处理 U 盘拔出逻辑');
  }

  // 取消订阅
  unsubscribeUsbEvents() {
    if (this.subscriber) {
      commonEventManager.unsubscribe(this.subscriber, (err: BusinessError) => {
        if (err) {
          console.error(`Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);
          return;
        }
        console.info('已取消订阅 U 盘插拔事件');
      });
    }
  }
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。