Xamarin.Forms Android 应用在工作配置文件中使用 VPN 和受管设备时未出现启动画面

Splash screen not appearing on Xamarin.Forms Android app with VPN and managed device on a Work profile

我们有一个非常奇怪的情况,当我们在使用 VPN 的工作配置文件中的托管设备上部署时,Android 应用程序的启动画面没有出现,但一切都在同一设备上的个人配置文件上运行.有没有人有同样的问题或任何可能导致此行为的建议?

为了完整性:使用 Titanium 时会发生相同或相似的错误,并在此处进行描述:https://jira.appcelerator.org/browse/TIMOB-26872

我们在 XML 中将启动画面设置为主启动器 activity 的“windowBackground”样式。 OS 在应用程序启动时显示“windowBackground”,但在我们的例子中,应用程序是由 Android Enterprise 在沙盒环境中启动的,“windowBackground”图像被忽略。所以,这似乎是 Android Enterprise 的问题。

解决方法:

  1. 创建一个单独的 SplashActivity 设置 MainLauncher = true(确保没有其他 activity 将 MainLauncher 设置为 true)。
  2. 为 SplashActivity 创建 SplashLayout.xml。
  3. 在base.OnCreate(savedInstanceState)之后的SplashActivity的OnCreate中, 设置activity的内容:SetContentView(Resource.Layout.SplashLayout);
  4. 启动 MainActivity:RunOnUiThread(() => StartActivity(typeof(MainActivity)));
  5. 在 StartActivity 调用后根据您的需要进行延迟。
  6. 在延迟之后立即调用 Finish(),这样用户将无法 return 通过点击后退按钮返回初始屏幕。