diff --git a/frameworks/ets/ani/app_manager/src/ets_app_manager_utils.cpp b/frameworks/ets/ani/app_manager/src/ets_app_manager_utils.cpp index aeaea0a5381bba9cdfd7377d6273d8d2a80d2125..5844ad4197bb944085cf94cbc8460132ae6122fb 100644 --- a/frameworks/ets/ani/app_manager/src/ets_app_manager_utils.cpp +++ b/frameworks/ets/ani/app_manager/src/ets_app_manager_utils.cpp @@ -486,6 +486,42 @@ bool SetRunningMultiInstanceInfo( TAG_LOGE(AAFwkTag::APPMGR, "failed status:%{public}d", status); return false; } + if ((status = env->Object_SetPropertyByName_Int(object, "uid", instanceInfo.uid)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "uid failed status:%{public}d", status); + return false; + } + ani_class arrayCls = nullptr; + status = env->FindClass(CLASSNAME_ARRAY, &arrayCls); + if (status != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "find class failed status : %{public}d", status); + return false; + } + ani_method arrayCtor; + status = env->Class_FindMethod(arrayCls, "", "I:V", &arrayCtor); + if (status != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "find ctor failed status : %{public}d", status); + return false; + } + ani_object arrayObj; + status = env->Object_New(arrayCls, arrayCtor, &arrayObj, instanceInfo.pids.size()); + if (status != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "Object_New array failed status : %{public}d", status); + return false; + } + ani_size index = 0; + for (auto &pid : instanceInfo.pids) { + ani_object aniPid = AppExecFwk::CreateInt(env, pid); + status = env->Object_CallMethodByName_Void(arrayObj, "$_set", "ILstd/core/Object;:V", index, aniPid); + if (status != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "set failed status : %{public}d", status); + return false; + } + index++; + } + if ((status = env->Object_SetPropertyByName_Ref(object, "pids", arrayObj)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPMGR, "pids failed status:%{public}d", status); + return false; + } return true; } diff --git a/frameworks/ets/ets/BUILD.gn b/frameworks/ets/ets/BUILD.gn index 128a246f4b8e093c39327fb5d0bf5735863e4924..29f357b193cf6458fda015f9b8ac17e6d582bc90 100644 --- a/frameworks/ets/ets/BUILD.gn +++ b/frameworks/ets/ets/BUILD.gn @@ -1262,6 +1262,23 @@ ohos_prebuilt_etc("ability_runtime_share_extension_ability_abc_etc") { deps = [ ":ability_runtime_share_extension_ability_abc" ] } +generate_static_abc("ability_runtime_running_multi_instance_info_abc") { + base_url = "./" + files = [ "./application/RunningMultiInstanceInfo.ets" ] + + is_boot_abc = "True" + device_dst_file = + "/system/framework/ability_runtime_running_multi_instance_info_abc.abc" +} + +ohos_prebuilt_etc("ability_runtime_running_multi_instance_info_abc_etc") { + source = "$target_out_dir/ability_runtime_running_multi_instance_info_abc.abc" + module_install_dir = "framework" + subsystem_name = "ability" + part_name = "ability_runtime" + deps = [ ":ability_runtime_running_multi_instance_info_abc" ] +} + group("ets_packages") { deps = [ ":ability_application_abc_etc", @@ -1327,6 +1344,7 @@ group("ets_packages") { ":ability_runtime_process_information_abc_etc", ":ability_runtime_running_app_clone_abc_etc", ":ability_runtime_running_multi_appinfo_abc_etc", + ":ability_runtime_running_multi_instance_info_abc_etc", ":ability_runtime_want_abc_etc", ":ability_runtime_want_agent_abc_etc", ":ability_runtime_want_agent_info_abc_etc", diff --git a/frameworks/ets/ets/application/RunningMultiInstanceInfo.ets b/frameworks/ets/ets/application/RunningMultiInstanceInfo.ets index 10ce3036172120357be840706ba20822a41651f1..0bc5a6e9c8494a6d39e380c57c884c21148d58fb 100644 --- a/frameworks/ets/ets/application/RunningMultiInstanceInfo.ets +++ b/frameworks/ets/ets/application/RunningMultiInstanceInfo.ets @@ -14,8 +14,12 @@ */ export interface RunningMultiInstanceInfo { instanceKey: string; + uid: int; + pids: Array; } -class RunningMultiInstanceInfoInner implements RunningMultiInstanceInfo { +export class RunningMultiInstanceInfoInner implements RunningMultiInstanceInfo { instanceKey: string = ''; + uid: int; + pids: Array = []; } \ No newline at end of file