uni-app应用设置为主屏幕后进入一直处于启动页面

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app应用设置为主屏幕后进入一直处于启动页面
在安卓的 AndroidManifest.xml 清单中,添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
          xmlns:tools="http://schemas.android.com/tools"
          package="com.wt.yisuji_tablet">
    <!-- io.dcloud.nativeresouce -->
    <application  
        android:allowBackup="true"    
        android:allowClearUserData="true"    
        android:icon="@drawable/icon"    
        android:label="@string/app_name"    
        android:largeHeap="true"    
        android:supportsRtl="true">

        <activity  android:exported="true"  
                   android:name="io.dcloud.PandoraEntry"    
                   android:configChanges="orientation|keyboardHidden|keyboard|navigation"    
                   android:label="@string/app_name"    
                   android:launchMode="singleTop"    
                   android:hardwareAccelerated="true"    
                   android:theme="@style/TranslucentTheme"    
                   android:screenOrientation="user"    
                   android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity  android:exported="true"  
                   android:name="io.dcloud.PandoraEntryActivity"    
                   android:launchMode="singleTop"    
                   android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"    
                   android:hardwareAccelerated="true"    
                   android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"    
                   android:screenOrientation="user"    
                   android:theme="@style/DCloudTheme"    
                   android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme=" " />
            </intent-filter>
        </activity>
    </application>
</manifest>

设置主屏幕的代码主要是这一段:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

添加之后,打包过来运行,是能设置成为主屏幕应用的,但是打开就一直处于启动页面。

之后取消主屏幕设置,直接打开app,也一直处于启动页面,不能进入到app内(从一开始不设置成主屏幕应用,是能正常打开app)。

现在不知道是什么问题导致的,是这清单的问题?还是app里面的代码配置问题吗?

有没有大佬给点见解或者解决办法。谢谢

开发环境与项目信息

信息
包名 com.wt.yisuji_tablet
主要Activity io.dcloud.PandoraEntry
其他Activity io.dcloud.PandoraEntryActivity
AndroidManifest 已配置主屏幕和默认启动器

9 回复

测试添加之后可以启动,可以报一下有没有报错


1、首页打开没有设置主屏幕应用时,是否能打开软件 2、设置主屏幕应用之后,停留在启动页,那重启平板之后能否进入软件

res 目录下创建 ”layout" 然后在创建 “activity_splash.xml” 文件 内容:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="[@drawable](/user/drawable)/push" android:layout_centerInParent="true" /> </RelativeLayout>
然后打包运行

要屏蔽返回,第一次启动要重启一下机子

// 关闭程序启动界面 plus.navigator.closeSplashscreen();

相同的问题,请问你解决了吗

这个是不是放到POS上,要求将apk设置成桌面应用?

遇到同样问题,楼主解决了吗?

在uni-app中,如果应用被添加到主屏幕(通常称为“添加到主屏”或“添加到Home Screen”)后,进入应用一直处于启动页面,这可能是由于多种原因导致的。以下是一些可能的原因及解决方案的代码示例,帮助你排查和解决问题。

1. 检查App启动流程

确保你的App.vue中的onLaunch方法没有阻塞主线程。例如,如果你在onLaunch中进行了长时间的网络请求或复杂的计算,这可能会导致启动页面卡住。

// App.vue
export default {
  onLaunch() {
    // 快速启动逻辑,避免长时间操作
    console.log('App Launch');
    // 网络请求或复杂计算应放在异步处理中
    setTimeout(() => {
      // 模拟异步操作
      console.log('Async operation completed');
    }, 0);
  }
}

2. 检查页面跳转逻辑

确保在启动页面(通常是pages/index/index.vue)中有正确的页面跳转逻辑。如果跳转条件不满足,可能会导致页面无法跳转。

// pages/index/index.vue
export default {
  onLoad() {
    // 假设有一个条件判断是否需要跳转到其他页面
    if (this.shouldRedirect()) {
      uni.redirectTo({
        url: '/pages/other/other'
      });
    }
  },
  methods: {
    shouldRedirect() {
      // 返回是否需要跳转的布尔值
      return true; // 或根据实际需求判断
    }
  }
}

3. 检查生命周期函数

确保没有其他页面的生命周期函数(如onShowonLoad)中有阻塞操作,这可能会影响到启动页面的正常跳转。

// 其他页面的示例
export default {
  onShow() {
    // 快速执行逻辑,避免长时间操作
    console.log('Page Show');
    // 如果需要异步操作,同样应放在异步处理中
  }
}

4. 调试和日志

增加更多的日志输出,以便更好地跟踪应用的启动流程和页面跳转情况。

// 在关键位置增加console.log
console.log('Checking condition for redirect...');
if (condition) {
  console.log('Redirecting to another page...');
  uni.redirectTo({ url: '/path/to/page' });
} else {
  console.log('Condition not met, staying on current page.');
}

通过上述代码示例和检查点,你应该能够定位并解决uni-app应用在添加到主屏幕后一直处于启动页面的问题。如果问题依旧存在,建议进一步检查应用的网络请求、本地存储以及第三方插件的使用情况,确保它们没有影响到应用的正常启动和页面跳转。

回到顶部