Установите ориентацию экрана в приложении Android / Cordova 3.5

Кто-нибудь знает, как заблокировать ориентацию экрана в портретной ориентации в приложении для Android, созданном с помощью Intel XDK?

Я сдаюсь, после трех нижних попыток я публикую весь html-документ, может быть, вы сможете понять, что я делаю неправильно:

index.html

<!DOCTYPE html>
<html>

<head>
    <title>Title</title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <script src="cordova.js"></script>
    <script src="xhr.js"></script>
    <script src="js/app.js"></script>
    <script src="js/init-app.js"></script>
    <script src="xdk/init-dev.js"></script>

    <script src="intelxdk.js"></script>
    <script>
document.addEventListener("intel.xdk.device.ready", onDeviceReady, false);               
function onDeviceReady(){
      intel.xdk.device.setRotateOrientation('portrait');

    intel.xdk.device.hideSplashScreen();   
}        
    </script>

    <style>
        @-ms-viewport { width: 100vw ; zoom: 100% ; }
        @viewport { width: 100vw ; zoom: 100% ; }
        @-ms-viewport { user-zoom: fixed ; }
        @viewport { user-zoom: fixed ; }
    </style>

    <link rel="stylesheet" href="css/app.css">

</head>

<body>
    <h1 class="align-center">Testing orientation lock</h1>
    <p class="align-center">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec malesuada risus libero, nec consectetur nunc vestibulum quis. Nam rhoncus ullamcorper dui, vitae imperdiet augue vulputate non. In non sodales dolor. Maecenas sagittis, erat a consequat sollicitudin, enim metus feugiat sem, vel varius mauris eros vitae sapien. Vestibulum sollicitudin arcu eleifend augue feugiat sagittis a non arcu. Duis tempus laoreet faucibus. Morbi fermentum placerat lacus et consectetur. Aenean convallis diam in congue convallis. Ut at ullamcorper mauris. Fusce suscipit tincidunt lacus, et volutpat arcu bibendum eu. In vehicula mi lorem, eget vestibulum orci cursus ac. Etiam vitae quam ut ipsum accumsan viverra. Proin commodo augue diam, tincidunt pretium purus interdum et. Suspendisse tristique vehicula tempus. Praesent ultrices nibh et tortor venenatis, at laoreet augue sodales.
    </p>

</body>
</html>

Я уже пытался добавить следующее в свой тег заголовка, и это не сработало...:

    <script type="text/javascript" language="javascript">
        function onDeviceReady() {

            AppMobi.device.hideSplashScreen();

         //lock orientation
         AppMobi.device.setRotateOrientation("portrait");
         AppMobi.device.setAutoRotate(false);

        };

        document.addEventListener("appMobi.device.ready",onDeviceReady,false);

      function openNewWindow(url){
         AppMobi.device.showRemoteSiteExt(url);
      };
</script>

ОБНОВЛЕНИЕ

Я также попытался добавить следующее в intelxdk.config.additions.xml :

<preference name="Orientation" value="portrait" />

..и не получилось...

ОБНОВЛЕНИЕ 2

Я также пробовал:

   <script src="intelxdk.js"></script>
    <script>
document.addEventListener("intel.xdk.device.ready", onDeviceReady, false);               
function onDeviceReady(){
    // set orientation

      intel.xdk.device.setRotateOrientation('portrait');

    intel.xdk.device.hideSplashScreen();   
}        
    </script>

person Alin    schedule 08.12.2014    source источник


Ответы (2)


Хм, выполните следующие действия:

добавлять

  android:screenOrientation="portrait"

в ваш AndroidManifest.xml.

в итоге должно получиться что-то вроде этого:

<activity android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="inappbrowser" android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

В противном случае всегда есть этот плагин.

person SeahawksRdaBest    schedule 08.12.2014
comment
Сценарий не работал, но у меня не было возможности попробовать плагин, я нашел другой плагин, который я тестировал, и теперь он работает нормально, см. мой ответ в этом посте, если вам интересно. Кроме того, +1 - person Alin; 09.12.2014
comment
Хм... Я прямо сейчас спрашивал себя, можно ли изменить AndroidManifest.xml, поскольку вы не можете получить к нему доступ через Intel XDK (Intel XDK работает иначе, чем собственная разработка Android). Но это представляется возможным следующим образом: software.intel. com/en-us/xdk/faqs/general#android-manifest - person Jana Weschenfelder; 09.01.2016

Попробовав все, что я мог найти и придумать, я в итоге использовал это (ссылка на GitHub) плагин.

Плагин называется cordova-yoik-screenorientation, и все, что вам нужно сделать, это:

Загрузите архив GitHub.

Скопируйте папку plugin.xml и src в корневой файл.

Скопируйте файлы screenorientation.android.js, screenorientation.bb10.js, screenorientation.ios.js и screenorientation.js. в папку www.

Добавьте в заголовок index.html следующее:

<script>
   screen.lockOrientation('landscape');
</script>

...вы можете изменить пейзаж на портрет, если хотите.

person Alin    schedule 09.12.2014