Почему блокировка ориентации экрана не будет работать - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь установить ориентацию экрана для портрета для одной страницы в моем приложении ioni c 4.

с помощью плагина cordova: https://github.com/apache/cordova-plugin-screen-orientation

регистрация текущей ориентации и мониторинг изменений ориентации работает нормально. Но когда я пытаюсь заблокировать ориентацию экрана, ничего не происходит, и экран продолжает вращаться при изменении ориентации.

В android studio появляется следующее сообщение об ошибке, когда приложение пытается заблокировать страницу:

2020-01-06 13:30:26.003 1913-2198/com.projectX E/Capacitor: Post message error:
java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference
    at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:171)
    at org.apache.cordova.PluginManager.exec(PluginManager.java:122)
    at com.getcapacitor.MessageHandler.callCordovaPluginMethod(MessageHandler.java:70)
    at com.getcapacitor.MessageHandler.postMessage(MessageHandler.java:46)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:326)
    at android.os.Looper.loop(Looper.java:165)
    at android.os.HandlerThread.run(HandlerThread.java:65)

Ниже мой app.module.ts

 import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
 @NgModule({
   providers: [  
     ScreenOrientation    
   ],

 })

Ниже приведена страница, на которой я sh заблокирую ориентацию, map.page.ts

 import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';

 export class MapPage {

   places: Place[];
   @ViewChild(IonContent) content: IonContent;

   constructor(public platform: Platform, public renderer: Renderer, private 
      alertCtrl: AlertController, private router: Router, private placeService: 
      PlaceService, public navCtrl: NavController, private screenOrientation: 
      ScreenOrientation) {      
   }

   ngOnInit() {
     console.log("lockorientation  ");
     screen.orientation.lock('portrait');
     console.log("lockorientation  ");
   }

Я также играл с файлом confix. xml, чтобы заблокировать приложение в портретном режиме, используя:

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

Но приложение просто игнорирует команду и продолжает вращаться.

1 Ответ

0 голосов
/ 06 января 2020

используйте это в своем коде

this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT);
...