【问题标题】:Android 12 splash screen conditional start screenAndroid 12 启动画面条件启动画面
【发布时间】:2021-12-26 16:24:53
【问题描述】:

我浏览了documentation on the splash screen for Android 12migrating existing splash screen,但没有明确提及如何根据条件选择开始屏幕。

具体来说,我之前添加了检查用户是否像这样登录:

class SplashScreenActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        if(viewModel.isUserSignedIn()) {
            navigateToMain()
        } else {
            navigateToAuth()
        }
    }
}

SplashScreenActivity 被标记为默认启动活动。当我保持这种状态时,Android Studio 会发出警告 - The application should not provide its own launch screen

我按照指南对其进行了修改,并从活动中删除了setContentView,并调用了installSplashScreen

class SplashScreenActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        installSplashScreen()

        if(viewModel.isUserSignedIn()) {
            navigateToMain()
        } else {
            navigateToAuth()
        }
    }
}

当我在模拟器上运行时,它似乎按预期工作,但 Android Studio 继续发出相同的警告。

这是迁移到 Android 12 启动画面的正确方法吗?如果是,为什么 Android Studio 上的错误仍然显示? 另外,我们是否需要将 Activity 保留为默认启动器,或者那里需要进行更改?

【问题讨论】:

    标签: android android-studio kotlin splash-screen


    【解决方案1】:

    您仍然需要在此处致电setContentView。 所以代码看起来像:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        installSplashScreen()
        setContentView(R.layout.activity_splash_screen)
    
        if(viewModel.isUserSignedIn()) {
            navigateToMain()
        } else {
            navigateToAuth()
        }
    }
    

    【讨论】:

    • 我也试过这个。它不会在旧设备上显示启动画面,并且 android studio 继续给出相同的警告。
    • 你的minSdkVersion是什么?
    • minSdkVersion 为 26
    猜你喜欢
    • 1970-01-01
    • 2022-12-28
    • 2022-01-16
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2022-12-20
    • 2021-09-19
    相关资源
    最近更新 更多