2017-09-26 2 views
3

Le titre peut être un peu flou, donc je vais expliquer quel est mon problème. Dans mon application hybride, j'ai utilisé <plugin spec="2.3.0" name="cordova-plugin-crosswalk-webview" source="npm" /> (config.xml) pour publier mon application sur les anciens systèmes. Je mets également l'orientation à paysage en utilisant ce <plugin name="cordova-plugin-screen-orientation" source="npm" spec="2.0.0" /> puis dans index.htmlAprès le rafraîchissement, mon webview ne définit pas l'orientation de l'écran

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

J'ai également ajouté une fonction qui ferme mon application après taping sur la flèche sur la barre android

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

Alors loin tout fonctionne bien. Le problème est que, après avoir fermé mon application, il est toujours en RAM et vous pouvez y revenir en cliquant sur le bouton droit sur la barre android. Normalement, ce n'est pas un problème car l'application devrait juste recommencer. Mais dans mon cas, il oublie de charger le paramètre d'orientation. J'ai passé 5 heures à trouver pourquoi. Et après avoir enlevé le passage pour piétons de mon application, j'ai trouvé la raison. Je n'ai pas besoin de crosswalk sur mon téléphone car il a Android 7.1.1 mais j'en ai besoin pour publier mon application. Mais le passage pour piétons semble être ce problème. Ce genre de bugs après "backing" à l'application de la RAM. Donc j'ai deux questions: Est-il possible de "rappeler" à mon Webview de charger cette orientation dans cette situation? Et puis-je publier mon application dans deux fichiers, pour les nouveaux téléphones et les anciens (sous la seule position dans le magasin)?

Répondre

1

Essayez d'ajouter

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

à votre fichier config.xml. Cela devrait bloquer l'orientation du paysage.

L'événement resume est déclenché lorsque la plate-forme native extrait l'application de l'arrière-plan. Vous pouvez ajouter un écouteur d'événement, puis relancer votre code pour verrouiller l'orientation.

Vous pouvez détecter la version du système d'exploitation et du système d'exploitation à l'aide du plugin cordova-plugin-device. Cela va obtenir ces deux valeurs.

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

Vous pouvez ensuite exécuter un code différent en fonction de la version du système d'exploitation. Selon la façon dont différentes l'application va agir pour chaque version, il pourrait être utile de lire https://developer.android.com/google/play/publishing/multiple-apks.html

Edit:

Vous pouvez ajouter le code ci-dessous pour votre config.xml et cela devrait permettre à l'orientation à la fois paysage et inverse paysage:

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

vous pouvez trouver d'autres options: https://developer.android.com/guide/topics/manifest/activity-element.html#screen

+0

Ok, mais après avoir réglé mon orientation comme vous avez dit qu'il tourne l'écran coshe sur le côté gauche (primaire paysage) et je voudrais qu'il travail dans les deux sens. Des idées? – wymyszony

+0

J'ai mis à jour ma réponse @wymyszony – Profit

+1

Je devais ajouter ceci (xmlns: android = "http://schemas.android.com/apk/res/android") à mon et maintenant cela fonctionne. Merci mec! – wymyszony