AutoFillRequest (系统接口)

当AutoFillExtensionAbility触发回调函数时,提供给开发者的页面数据和回调接口。

说明:

本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 本模块接口均为系统接口。 本模块接口仅可在Stage模型下使用。

导入模块

import autoFillManager from '@ohos.app.ability.autoFillManager';

FillRequest

自动填充信息。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 类型 必填 说明
type AutoFillType 自动填充类型。
viewData ViewData 页面数据。

SaveRequest

自动保存请求信息。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 类型 必填 说明
viewData ViewData 页面数据。

FillResponse

自动填充响应。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 类型 必填 说明
viewData ViewData 页面数据。

FillRequestCallback

自动填充或者生成密码时的回调对象,可以通过此回调通知客户端成功或者失败。

FillRequestCallback.onSuccess

onSuccess(response: FillResponse): void

通知自动填充请求已成功完成。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

参数:

参数名 类型 必填 说明
response FillResponse 自动填充响应信息。

错误码:

错误码ID 错误信息
16000050 Internal error.

示例:

// MyAutoFillExtensionAbility.ts
import AutoFillExtensionAbility from '@ohos.app.ability.AutoFillExtensionAbility';
import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
import autoFillManager from '@ohos.app.ability.autoFillManager';
import hilog from '@ohos.hilog';

class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
  onFillRequest(session: UIExtensionContentSession,
                request: autoFillManager.FillRequest,
                callback: autoFillManager.FillRequestCallback) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
    try {
      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
        'fillCallback': callback,
        'message': 'AutoFill Page',
        'viewData': request.viewData,
      }
      let storage_fill = new LocalStorage(storageData);
      if (session) {
        session.loadContent('pages/AutoFillPage', storage_fill);
      } else {
        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
      }
    } catch (err) {
      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
    }
  }
}
// AutoFillPage.ets
import autoFillManager from '@ohos.app.ability.autoFillManager';
import Base from '@ohos.base';
import hilog from '@ohos.hilog';

let storage: LocalStorage = LocalStorage.getShared();
let fillCallback: autoFillManager.FillRequestCallback | undefined =
  storage.get<autoFillManager.FillRequestCallback>('fillCallback');
let viewData: autoFillManager.ViewData | undefined = storage.get<autoFillManager.ViewData>('viewData');

@Entry
@Component
struct AutoFillPage {

  build() {
    Row() {
      Column() {
        Text('AutoFill Page')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }

      Button('onSuccess')
        .onClick(() => {
          if (viewData) {
            viewData.pageNodeInfos[0].value = 'user1';
            viewData.pageNodeInfos[1].value = 'user1 password';
            viewData.pageNodeInfos[2].value = 'user1 generate new password';
            hilog.info(0x0000, 'testTag', 'autofill success with viewData: %{public}s', JSON.stringify(viewData));
            try {
              fillCallback?.onSuccess({ viewData: viewData });
            } catch (error) {
              console.error(`catch error, code: ${(error as Base.BusinessError).code},
                message: ${(error as Base.BusinessError).message}`);
            }
          }
        })
        .width('100%')
    }
    .height('100%')
  }
}

FillRequestCallback.onFailure

onFailure(): void

通知自动填充请求已失败。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

错误码:

错误码ID 错误信息
16000050 Internal error.

示例:

// MyAutoFillExtensionAbility.ts
import AutoFillExtensionAbility from '@ohos.app.ability.AutoFillExtensionAbility';
import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
import autoFillManager from '@ohos.app.ability.autoFillManager';
import hilog from '@ohos.hilog';

class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
  onFillRequest(session : UIExtensionContentSession,
                request : autoFillManager.FillRequest,
                callback : autoFillManager.FillRequestCallback) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
    try {
      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
        'fillCallback': callback,
        'message': 'AutoFill Page',
        'viewData': request.viewData,
      }
      let storage_fill = new LocalStorage(storageData);
      if (session) {
        session.loadContent('pages/AutoFill Page', storage_fill);
      } else {
        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
      }
    } catch (err) {
      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
    }
  }
}
// AutoFillPage.ets
import autoFillManager from '@ohos.app.ability.autoFillManager';
import Base from '@ohos.base';
import hilog from '@ohos.hilog';

let storage: LocalStorage = LocalStorage.getShared();
let fillCallback: autoFillManager.FillRequestCallback | undefined =
  storage.get<autoFillManager.FillRequestCallback>('fillCallback');

@Entry
@Component
struct AutoFillPage {

  build() {
    Row() {
      Column() {
        Text('AutoFill Page')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      Button('onFailure')
        .onClick(() => {
          hilog.info(0x0000, 'testTag', 'autofill failure');
          try {
            fillCallback?.onFailure();
          } catch (error) {
            console.error(`catch error, code: ${(error as Base.BusinessError).code},
              message: ${(error as Base.BusinessError).message}`);
          }
        })
      .width('100%')
    }
    .height('100%')
  }
}

FillRequestCallback.onCancel

onCancel(): void

通知自动填充已被取消。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

错误码:

错误码ID 错误信息
16000050 Internal error.

示例:

// MyAutoFillExtensionAbility.ts
import AutoFillExtensionAbility from '@ohos.app.ability.AutoFillExtensionAbility';
import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
import autoFillManager from '@ohos.app.ability.autoFillManager';
import hilog from '@ohos.hilog';

class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
  onFillRequest(session: UIExtensionContentSession,
                request: autoFillManager.FillRequest,
                callback: autoFillManager.FillRequestCallback) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
    try {
      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
        'fillCallback': callback,
        'message': 'AutoFill Page',
        'viewData': request.viewData,
      }
      let storage_fill = new LocalStorage(storageData);
      if (session) {
        session.loadContent('pages/AutoFillPage', storage_fill);
      } else {
        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
      }
    } catch (err) {
      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
    }
  }
}
// AutoFillPage.ets
import autoFillManager from '@ohos.app.ability.autoFillManager';
import Base from '@ohos.base';
import hilog from '@ohos.hilog';

let storage: LocalStorage = LocalStorage.getShared();
let fillCallback: autoFillManager.FillRequestCallback | undefined =
  storage.get<autoFillManager.FillRequestCallback>('fillCallback');

@Entry
@Component
struct AutoFillPage {

  build() {
    Row() {
      Column() {
        Text('Hello World')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }

      Button('onCancel')
        .onClick(() => {
          hilog.info(0x0000, 'testTag', 'autofill cancel');
          try {
            fillCallback?.onCancel();
          } catch (error) {
            console.error(`catch error, code: ${(error as Base.BusinessError).code},
              message: ${(error as Base.BusinessError).message}`);
          }
        })
        .width('100%')
    }
    .height('100%')
  }
}

SaveRequestCallback

自动保存或者手动保存请求回调。

SaveRequestCallback.onSuccess

onSuccess(): void

通知保存请求已成功处理。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

错误码:

错误码ID 错误信息
16000050 Internal error.

示例:

// MyAutoFillExtensionAbility.ts
import AutoFillExtensionAbility from '@ohos.app.ability.AutoFillExtensionAbility';
import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
import autoFillManager from '@ohos.app.ability.autoFillManager';
import hilog from '@ohos.hilog';

class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
  onSaveRequest(session: UIExtensionContentSession,
                request: autoFillManager.SaveRequest,
                callback: autoFillManager.SaveRequestCallback) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
    try {
      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
        'message': 'AutoFill Page',
        'saveCallback': callback,
        'viewData': request.viewData
      }
      let storage_save = new LocalStorage(storageData);
      if (session) {
        session.loadContent('pages/SavePage', storage_save);
      } else {
        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
      }
    } catch (err) {
      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
    }
  }
}
// SavePage.ets
import autoFillManager from '@ohos.app.ability.autoFillManager';
import Base from '@ohos.base';
import hilog from '@ohos.hilog';

let storage: LocalStorage = LocalStorage.getShared();
let saveCallback: autoFillManager.SaveRequestCallback | undefined =
  storage.get<autoFillManager.SaveRequestCallback>('saveCallback');

@Entry
@Component
struct SavePage {

  build() {
    Row() {
      Column() {
        Text('SavePage')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }

      Button('onSuccess')
        .onClick(() => {
          hilog.info(0x0000, 'testTag', 'autosave success');
          try {
            saveCallback?.onSuccess();
          } catch (error) {
            console.error(`catch error, code: ${(error as Base.BusinessError).code},
              message: ${(error as Base.BusinessError).message}`);
          }
        })
        .width('100%')
    }
    .height('100%')
  }
}

SaveRequestCallback.onFailure

onFailure(): void

通知保存请求处理失败。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

错误码:

错误码ID 错误信息
16000050 Internal error.

示例:

// MyAutoFillExtensionAbility.ts
import AutoFillExtensionAbility from '@ohos.app.ability.AutoFillExtensionAbility';
import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
import autoFillManager from '@ohos.app.ability.autoFillManager';
import hilog from '@ohos.hilog';

class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
  onSaveRequest(session: UIExtensionContentSession,
                request: autoFillManager.SaveRequest,
                callback: autoFillManager.SaveRequestCallback) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
    try {
      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
        'message': 'AutoFill Page',
        'saveCallback': callback,
        'viewData': request.viewData
      }
      let storage_save = new LocalStorage(storageData);
      if (session) {
        session.loadContent('pages/SavePage', storage_save);
      } else {
        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
      }
    } catch (err) {
      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
    }
  }
}
// SavePage.ets
import autoFillManager from '@ohos.app.ability.autoFillManager';
import Base from '@ohos.base';
import hilog from '@ohos.hilog';

let storage: LocalStorage = LocalStorage.getShared();
let saveCallback: autoFillManager.SaveRequestCallback | undefined =
  storage.get<autoFillManager.SaveRequestCallback>('saveCallback');  

@Entry
@Component
struct SavePage {
  build() {
    Row() {
      Column() {
        Text('Save Page')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }

      Button('onFailure')
        .onClick(() => {
          hilog.info(0x0000, 'testTag', 'autofill failure');
          try {
            saveCallback?.onFailure();
          } catch (error) {
            console.error(`catch error, code: ${(error as Base.BusinessError).code},
              message: ${(error as Base.BusinessError).message}`);
          }
        })
        .width('100%')
    }
    .height('100%')
  }
}