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

时间:2017-09-26 19:29:32

标签: javascript android cordova webview phonegap

标题可能有点不清楚,所以我要解释我的问题是什么。在我的混合应用程序中,我使用<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栏上的右键。通常它不是问题,因为app应该重新开始。但在我的情况下,它会忘记加载方向设置。我花了5个小时才找到原因。从我的应用程序中删除人行横道后,我找到了原因。我不需要在手机上进行人行横道,因为它有android 7.1.1,但我需要它来发布我的应用程序。但人行横道似乎是这个问题。在&#34;支持&#34;之后出现了一些错误。从RAM到应用程序。所以我有两个问题:有没有办法提醒&#34;我的Webview在这种情况下加载这个方向?我可以将我的应用程序发布在两个文件中,用于新手机和旧手机(在商店的一个位置下)吗?

1 个答案:

答案 0 :(得分: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