默认情况下如何以全屏模式启动 uwp webview 应用程序

Posted

技术标签:

【中文标题】默认情况下如何以全屏模式启动 uwp webview 应用程序【英文标题】:How to launch uwp webview app in full screen mode by default 【发布时间】:2021-05-26 10:25:39 【问题描述】:

我们在 Visual Studio 2017 的帮助下创建了一个成熟的 UWP webview 应用程序 (WinJs)。最近通过 microsoft 文档和 *** 线程,我们发现 uwp 应用程序可以在删除标题栏的情况下全屏启动。

以下代码需要插入到 App.Xaml.Cs 文件中

ApplicationView view = ApplicationView.GetForCurrentView();
view.TryEnterFullScreenMode();

但是这里的问题是,我们无法找到这个文件来插入它。可能是因为我选择了WinJS模板,我不知道。

其他重要文件包括 main.js | packageapp.manifest 文件。我不知道这段代码是否可以与这个文件中的任何一个集成。

编辑: 在roy的帮助下,根据windows通用示例github中给出的示例修改了主js文件,但是还是全屏好像打不开。

main.js文件代码如下

(function () 
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;
    var isFirstActivation = true;

    var ViewManagement = Windows.UI.ViewManagement;
    var ApplicationViewWindowingMode = ViewManagement.ApplicationViewWindowingMode;
    var ApplicationView = ViewManagement.ApplicationView;

    
        
    function onLaunchInFullScreenModeChanged() 
        ApplicationView.preferredLaunchWindowingMode = launchInFullScreenMode.checked ? ApplicationViewWindowingMode.fullScreen : ApplicationViewWindowingMode.auto;
    

    app.onactivated = function (args) 
        if (args.detail.kind === activation.ActivationKind.voiceCommand) 
            // TODO: Handle relevant ActivationKinds. For example, if your app can be started by voice commands,
            // this is a good place to decide whether to populate an input field or choose a different initial view.
        
        else if (args.detail.kind === activation.ActivationKind.launch) 
            launchInFullScreenMode.addEventListener("click", onLaunchInFullScreenModeChanged);

            launchInFullScreenMode.checked = ApplicationView.preferredLaunchWindowingMode == ApplicationViewWindowingMode.fullScreen;
            // A Launch activation happens when the user launches your app via the tile
            // or invokes a toast notification by clicking or tapping on the body.
            if (args.detail.arguments) 
                // TODO: If the app supports toasts, use this value from the toast payload to determine where in the app
                // to take the user in response to them invoking a toast notification.
            
            else if (args.detail.previousExecutionState === activation.ApplicationExecutionState.terminated) 
                // TODO: This application had been suspended and was then terminated to reclaim memory.
                // To create a smooth user experience, restore application state here so that it looks like the app never stopped running.
                // Note: You may want to record the time when the app was last suspended and only restore state if they've returned after a short period.
            
        

        if (!args.detail.prelaunchActivated) 
            // TODO: If prelaunchActivated were true, it would mean the app was prelaunched in the background as an optimization.
            // In that case it would be suspended shortly thereafter.
            // Any long-running operations (like expensive network or disk I/O) or changes to user state which occur at launch
            // should be done here (to avoid doing them in the prelaunch case).
            // Alternatively, this work can be done in a resume or visibilitychanged handler.
        

        if (isFirstActivation) 
            // TODO: The app was activated and had not been running. Do general startup initialization here.
            document.addEventListener("visibilitychange", onVisibilityChanged);
            args.setPromise(WinJS.UI.processAll();
            launchInFullScreenMode.addEventListener("click", onLaunchInFullScreenModeChanged);
            launchInFullScreenMode.checked = ApplicationView.preferredLaunchWindowingMode == ApplicationViewWindowingMode.fullScreen;
        

        isFirstActivation = false;
    ;

    function onVisibilityChanged(args) 
        if (!document.hidden) 
            // TODO: The app just became visible. This may be a good time to refresh the view.
        
    

    app.oncheckpoint = function (args) 
        // TODO: This application is about to be suspended. Save any state that needs to persist across suspensions here.
        // You might use the WinJS.Application.sessionState object, which is automatically saved and restored across suspension.
        // If you need to complete an asynchronous operation before your application is suspended, call args.setPromise().
    ;

    app.start();

)();

关于如何解决这个问题的任何建议。

【问题讨论】:

【参考方案1】:

您可以将代码放在一个 JS 文件中,您正在显示的 html 将引用该文件。

这里曾经有一个 JS UWP FullScreenMode 示例:FullScreenMode JS。尽管已存档,但您仍然可以查看 scenario2-launch.jsscenario1-basic.js。它展示了如何在 javascript 中使用这些 API。

【讨论】:

您检查过我提供的样品吗?示例展示了如何在 JS 项目中使用全屏模式的全过程。 你需要在html引用的js文件中使用这些全屏模式API 嗨罗伊,我现在正在使用scenario2.launch js代码,因为该应用程序使用webview技术,我不知道是否需要使用这个特定的行var page = WinJS .UI.Pages.define("/html/scenario2-launch.html" 在代码中。 您不需要将整个示例 js 文件复制到您的项目中。正如我所提到的,您只需将scenario2的代码添加到您的JS文件中即可。

以上是关于默认情况下如何以全屏模式启动 uwp webview 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何以全屏模式自动打开网页

在 Windows 上以全屏模式运行 chrome

Windows 10 通用应用程序 - 默认以全屏模式运行

如何使应用程序以全屏模式运行?

如何使用标签栏以全屏模式打开 UIView?

使用 MPMoviePlayerController 无法以全屏模式播放大尺寸视频