HarmonyOS 鸿蒙Next 异步操作中不显示设置了显示于应用之上的toast

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 异步操作中不显示设置了显示于应用之上的toast

  1. 自定义了toast,设置了showMode: promptAction.ToastShowMode.TOP_MOST属性,使toast可以显示于应用之上;
  2. 在异步操作中,调用toast,无法显示,去除showMode: promptAction.ToastShowMode.TOP_MOST可以正常显示。
2 回复

promptAction模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用。从API version 10开始,可以通过使用UIContext中的getPromptAction方法获取当前UI上下文关联的PromptAction对象。详细情况请查看:

//  index.ets
private getVersionInfo() {
  bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
    .then((bundleInfo) => {
      let promptActionData = this.getUIContext().getPromptAction();
      showToast(promptActionData,bundleInfo.versionName)
    }).catch((error: string) => {
    console.error("获取版本号异常:" + error)
  })
}
//ComponentUtil.ets
import promptAction from '@ohos.promptAction';
import { PromptAction } from '@kit.ArkUI';
/**
duration 显示时间3S
@param msg
*/
export function showToast(promptActionData: PromptAction,msg: string | Resource) {
  promptActionData.showToast({
    message: msg,
    duration: 3000,
    bottom:"center",
    showMode: promptAction.ToastShowMode.TOP_MOST
  });
}

更多关于HarmonyOS 鸿蒙Next 异步操作中不显示设置了显示于应用之上的toast的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,如果你在使用异步操作时遇到Toast不显示且已设置为显示于应用之上的问题,这通常与Toast的显示权限、异步任务的执行上下文或系统权限管理有关。

  1. 检查Toast权限:确保你的应用具有在屏幕上显示Toast的权限。虽然鸿蒙系统通常不单独控制Toast权限,但还是要确认应用的基本权限设置。

  2. 上下文问题:异步操作中,Toast需要在正确的Activity或Application上下文中创建和显示。如果Toast是在一个非UI线程中创建的,确保它通过适当的Handler或runOnUiThread方法回到主线程进行显示。

  3. 系统权限管理:鸿蒙系统对前台服务和悬浮窗等有一定限制,虽然Toast不属于这两者,但确保应用没有被系统误判为滥用权限,导致部分UI功能受限。

  4. Toast配置:确认Toast的配置(如显示时长、位置等)是否正确,以及是否有其他UI元素(如弹窗、对话框)遮挡了Toast。

如果上述检查后问题依旧没法解决,请联系官网客服。官网地址是:

https://www.itying.com/category-93-b0.html

回到顶部