Account Subsystem Changelog

cl.account_os_account.1 createOsAccountForDomain Error Code Change

Changed the error code returned when the domain account created by createOsAccountForDomain() already exists from 12300001 to 12300004. Changed the error information from "common system error" to "The account already exists".

Change Impact

The application developed based on earlier versions needs to adapt the new error code. Otherwise, the original service logic will be affected.

Key API/Component Changes

  • AccountManager
    • createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback<OsAccountInfo>);
    • createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo): Promise<OsAccountInfo>;

Adaptation Guide

The sample code is as follows:

import account_osAccount from "@ohos.account.osAccount"

let accountMgr = account_osAccount.getAccountManager();
let domainInfo = {
  accountName: "zhangsan",
  domain: "china.example.com"
};
try {
  await accountMgr.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo);
  await accountMgr.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo);
} catch (err) {
  console.log("activateOsAccount err: " + JSON.stringify(err)); // error.code = 12300004;
}

cl.account_os_account.2 App Account getAllAccounts() Permission Change

Removed the ohos.permission.GET_ALL_APP_ACCOUNTS permission that is originally required for an application to call getAllAccounts() to obtain accessible accounts.

Change Impact

From this version, applications do not need the ohos.permission.GET_ALL_APP_ACCOUNTS permission when calling getAllAccounts().

Key API/Component Changes

  • AccountManager
    • getAllAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void;
    • getAllAccounts(): Promise<Array<AppAccountInfo>>;

Adaptation Guide

The following is the sample code for an application to obtain the accessible accounts without the ohos.permission.GET_ALL_APP_ACCOUNTS permission:

import account_appAccount from "@ohos.account.appAccount"

let accountMgr = account_appAccount.createAppAccountManager();
try {
  await accountMgr.addAccount("accessibleAccount_promise_nopermission");
  var data = await accountMgr.getAllAccounts();
  if (data[0].name == "accessibleAccount_promise_nopermission") {
    console.log("getAllAccounts successfully");
  }
} catch (err) {
  console.log("getAllAccounts err: " + JSON.stringify(err));
}

cl.account_os_account.3 App Account getAccountsByOwner() Permission Change

Removed the ohos.permission.GET_ALL_APP_ACCOUNTS permission that is originally required for an application to call getAccountsByOwner() to obtain the accessible accounts based on the account owner .

Change Impact

From this version, applications do not need the ohos.permission.GET_ALL_APP_ACCOUNTS permission when calling getAccountsByOwner().

Key API/Component Changes

  • AccountManager
    • getAccountsByOwner(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void;
    • getAccountsByOwner(owner: string): Promise<Array<AppAccountInfo>>;

Adaptation Guide

The following is the sample code for an application to obtain the accessible accounts based on the account owner without the ohos.permission.GET_ALL_APP_ACCOUNTS permission:

import account_appAccount from "@ohos.account.appAccount"

let accountMgr = account_appAccount.createAppAccountManager();
try {
  var ownerName = "com.example.owner";
  var data = await accountMgr.getAllAccounts(ownerName);
} catch (err) {
  console.log("getAllAccounts err: " + JSON.stringify(err));
}