uni-app 安卓4.4系统中showLoading, showModal等弹窗不显示

uni-app 安卓4.4系统中showLoading, showModal等弹窗不显示

操作步骤:

  • 直接云打包, 安装到安卓4.4即可重现

预期结果:

  • 正常显示弹窗等

实际结果:

  • 正常显示弹窗

bug描述:

uniapp 安卓4.4中的showLoading,showModal等弹窗不显示, 不管是本地打包还是云打包都是不显示
这个bug 从3.6就一直存在.

表格

信息类别 信息内容
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 4.4
手机厂商 模拟器
手机机型 盒子
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

image

demo.zip


更多关于uni-app 安卓4.4系统中showLoading, showModal等弹窗不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 安卓4.4系统中showLoading, showModal等弹窗不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 开发中,如果你在 Android 4.4 系统中遇到 showLoadingshowModal 等弹窗不显示的问题,可能是由于以下原因导致的:

1. 兼容性问题

Android 4.4 系统(API 19)较老,可能不支持某些较新的 JavaScript 特性或 WebView 的某些功能。uni-app 的弹窗组件可能依赖于这些特性或功能。

2. WebView 版本问题

Android 4.4 系统自带的 WebView 版本较低(Chrome 30 左右),可能无法完全支持现代前端框架的某些功能。uni-app 的弹窗组件可能依赖于较新的 WebView 功能。

3. 样式或布局问题

弹窗的样式或布局可能在低版本 Android 系统中无法正确渲染,导致弹窗无法显示。

解决方案

1. 使用原生组件

如果 showLoadingshowModal 等弹窗在 Android 4.4 中无法正常显示,可以尝试使用原生组件来替代。uni-app 提供了原生 API 调用,可以通过条件编译来针对不同平台使用不同的实现。

// #ifdef APP-PLUS
uni.showLoading({
    title: '加载中...'
});
// #endif

// #ifdef H5
// 使用 H5 的提示框
alert('加载中...');
// #endif

2. 升级 WebView

如果可能的话,建议用户升级设备的 WebView 版本。Android 系统允许用户单独更新 WebView 组件,通过 Google Play 商店可以更新到最新版本。

3. 降级 uni-app 版本

如果你使用的是较新的 uni-app 版本,尝试降级到旧版本,看看是否解决了问题。有时新版本的 uni-app 可能引入了不兼容低版本 Android 的代码。

4. 自定义弹窗

如果以上方法都无法解决问题,可以考虑自定义弹窗组件,使用原生 HTML + CSS + JavaScript 实现弹窗功能,以确保在低版本 Android 系统中的兼容性。

<template>
    <div v-if="showCustomModal" class="custom-modal">
        <div class="modal-content">
            <p>{{ modalMessage }}</p>
            <button @click="closeModal">关闭</button>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            showCustomModal: false,
            modalMessage: ''
        };
    },
    methods: {
        showModal(message) {
            this.modalMessage = message;
            this.showCustomModal = true;
        },
        closeModal() {
            this.showCustomModal = false;
        }
    }
};
</script>

<style>
.custom-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
}
.modal-content {
    background: white;
    padding: 20px;
    border-radius: 5px;
}
</style>
回到顶部