刷新后,我的 webview 没有设置正确的屏幕方向

Posted

技术标签:

【中文标题】刷新后,我的 webview 没有设置正确的屏幕方向【英文标题】:After refreshing, my webview doesn't set the right screen orientation 【发布时间】:2018-03-08 03:30:33 【问题描述】:

标题可能有点不清楚,所以我将解释我的问题。在我的混合应用程序中,我使用<plugin spec="2.3.0" name="cordova-plugin-crosswalk-webview" source="npm" /> (config.xml) 能够在旧系统上发布我的应用程序。我还使用<plugin name="cordova-plugin-screen-orientation" source="npm" spec="2.0.0" />然后在 index.html 中将方向设置为横向

function onLoad() 
        document.addEventListener("deviceready", onDeviceReady, false);
        screen.orientation.lock('landscape');
    

我还添加了一个功能,在点击 android 栏上的箭头后关闭我的应用程序

function onBackKeyDown() 
    navigator.app.exitApp();
    

到目前为止一切正常。问题是,关闭我的应用程序后,它仍在 RAM 中,您可以单击 android 栏上的右键返回它。通常这不是问题,因为应用程序应该重新启动。但在我的情况下,它忘记加载方向设置。我花了 5 个小时才找到原因。从我的应用程序中删除人行横道后,我找到了原因。我的手机不需要人行横道,因为它有 android 7.1.1,但我需要它来发布我的应用程序。但人行横道似乎是这个问题。从 RAM 中“备份”到应用程序后会出现这种错误。所以我有两个问题:有没有办法“提醒”我的 Webview 在这种情况下加载这个方向?我可以在两个文件中发布我的应用程序,分别用于新手机和旧手机(在商店的一个位置下)?

【问题讨论】:

【参考方案1】:

尝试添加

<preference name="orientation" value="landscape" />

到您的 config.xml 文件。这应该将方向锁定为横向。

resume 事件在本机平台将应用程序从后台拉出时触发。您可以添加一个事件侦听器,然后重新运行代码以锁定方向。

您可以使用 cordova-plugin-device 插件检测操作系统和操作系统版本。这将获得这两个值。

var os  = device.platform;  // Get the OS
var os_version = device.version;  // Get the OS version

然后,您可以根据操作系统版本运行不同的代码。根据应用程序对每个版本的不同作用,可能值得一读https://developer.android.com/google/play/publishing/multiple-apks.html

编辑:

您可以将以下代码添加到您的 config.xml 中,这应该允许方向为横向和反向横向:

<preference name="orientation" value="landscape" />
<config-file platform="android" parent="/manifest/application" mode="merge">
    <activity android:screenOrientation="sensorLandscape" />
</config-file>

您可以在此处找到其他选项:https://developer.android.com/guide/topics/manifest/activity-element.html#screen

【讨论】:

好的,但是像你说的那样设置我的方向后,它会将屏幕 olny 旋转到左侧(横向主),我希望它可以双向工作。有什么想法吗? 我必须将这个 (xmlns:android = "schemas.android.com/apk/res/android") 添加到我的 中,现在它可以工作了。谢谢你!

以上是关于刷新后,我的 webview 没有设置正确的屏幕方向的主要内容,如果未能解决你的问题,请参考以下文章

使用 webview 和刷新按钮加载 android

JavaScript 修改 webview 内容后,Android WebView 不刷新

Android中webview加载页面有重叠,是怎么回事

在 iOS 中旋转设备时,Webview 内容设置不正确

在 webview 上刷新标签栏项目

webview页面导航与android原生导航重叠怎么办