React Native Android не форсирует портретный режим - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь включить только портрет в своем приложении RN для Android, но, что бы я ни пытался, я не могу заставить его работать.

Проблема в том, что я установил автоповорот : На моем устройстве Huawei, это P20 Lite. Кажется, что «портрет» не перекрывает сенсор устройства. Когда, в соответствии с документацией, это должно произойти, если вы хотите, чтобы он НЕ перекрывал датчик, рекомендуется использовать вместо него userPortrait. Но мне нужно переопределить и заблокировать мой экран, чтобы он был портретным, несмотря ни на что.

Это мой AndroidManifest. xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.myapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:usesCleartextTraffic="true"
      android:networkSecurityConfig="@xml/network_security_config"
      android:theme="@style/AppTheme"
      tools:ignore="LockedOrientationActivity" // <---- HERE
      >

      <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/>

      <service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
        <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
      </service>

      <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
      <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
      </activity>

      <activity
        android:name=".SlashActivity"
        android:theme="@style/SplashTheme"
        android:label="@string/app_name"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"   // <---- HERE
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize" // <---- HERE
        android:windowSoftInputMode="adjustResize"
        android:exported="true"
        >
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
    </application>
</manifest>

Даже пытался установить его в MainActivity. java:

package com.myapp;
import android.content.pm.ActivityInfo;
import android.os.Bundle;

import com.reactnativenavigation.NavigationActivity;
import org.devio.rn.splashscreen.SplashScreen;

public class MainActivity extends NavigationActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this);

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // <--- HERE
        super.onCreate(savedInstanceState);
    }
}

Есть идеи, что может произойти?

Спасибо.

...