diff --git a/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp b/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp index cbb6307391b8f70c5643c14e943b396d55ca0d93..8aadd8dfae9efd60f9d305a4bb2de775529dc82e 100644 --- a/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp +++ b/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp @@ -5764,7 +5764,7 @@ static void ParsePrintRangeAdapter(ani_env* env, ani_object pageRange, PrintAttr if (env->Object_GetPropertyByName_Ref(pageRange, "pages", &pages) != ANI_OK) { WVLOG_E("ParsePrintRangeAdapter failed to get pages"); } - ani_array_int pagesArrayInt = static_cast(pages); + ani_array pagesArrayInt = static_cast(pages); printAttr.pageRange.startPage = static_cast(startPage); @@ -5773,10 +5773,32 @@ static void ParsePrintRangeAdapter(ani_env* env, ani_object pageRange, PrintAttr printAttr.pageRange.startPage, printAttr.pageRange.endPage); ani_size length = 0; + ani_class intCls {}; + ani_method unboxed {}; + auto status = env->FindClass("std.core.Int", &intCls); + if (status != ANI_OK) { + WVLOG_E("ParsePrintRangeAdapter failed to get class Int"); + return; + } + status = env->Class_FindMethod(intCls, "unboxed", ":i", &unboxed); + if (status != ANI_OK) { + WVLOG_E("ParsePrintRangeAdapter failed to get unbox method"); + return; + } env->Array_GetLength(pagesArrayInt, &length); for (uint32_t i = 0; i < length; ++i) { ani_int pagesInt; - env->Array_GetRegion_Int(pagesArrayInt, i, 1, &pagesInt); + ani_ref intRef {}; + status = env->Array_Get(pagesArrayInt, i, &intRef); + if (status != ANI_OK) { + WVLOG_E("ParsePrintRangeAdapter failed to get array element"); + return; + } + status = env->Object_CallMethod_Int(static_cast(intRef), unboxed, &pagesInt); + if (status != ANI_OK) { + WVLOG_E("ParsePrintRangeAdapter failed to unbox value"); + return; + } int pagesNum = static_cast(pagesInt); printAttr.pageRange.pages.push_back(pagesNum); }