W AndroidManifest: Oczekiwanie na Androida: screenOrientation = „nieokreślony”

44

Android Studio 3.6.

Chcę, aby moja aplikacja była zawsze w portraittrybie. Więc w moim AndroidMainfest.xml:

<activity
   android:name=".activity.SplashActivity"
   android:screenOrientation="portrait">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Uruchamiam aplikację i SplashActivitypokazuje w portraittrybie. Miły. Ale edytor pokazuje następujący błąd:

Expecting android:screenOrientation="unspecified"

Dlaczego?

subskrybent
źródło

Odpowiedzi:

67

W tagu manifestu (tuż pod xmlns:android="http://schemas.android.com/apk/res/android") umieść

xmlns:tools="http://schemas.android.com/tools"

Następnie umieść w znaczniku aplikacji

tools:ignore="LockedOrientationActivity"
Darragh MacKenna
źródło
lub jeśli masz już narzędzia: zignoruj ​​w znaczniku aplikacji, a następnie ustaw jako narzędzia: ignore = "GoogleAppIndexingWarning, LockedOrientationActivity"
Tajemnica
20

wpływa tylko na Android Studio 3.6+

Na czym polega problem? Ten problem występuje, ponieważ system Android chce, aby użytkownik sam kontrolował orientację aplikacji, nie zaleca się ograniczania orientacji aplikacji, na przykład jeśli użytkownik chce korzystać z aplikacji w orientacji poziomej, po prostu odwraca urządzenie, a czujniki wykonają pracę, ale gdy deweloper ogranicza orientację ekranu, nawet gdy działa czujnik obrotu, aplikacja pozostanie we wstępnie zdefiniowanym stanie, w sposób ograniczający możliwości urządzenia użytkownika.

Co zrobić teraz? Masz dwie opcje., Po pierwsze, zignoruj ​​błąd, ponieważ nie spowoduje to niepowodzenia kompilacji, nawet ja robię to samo, a generowanie apk / aab jest jak zwykle Inną opcją jest zapewnienie układów poziomych lub obsługa rotacji, jak w niektórych aplikacje, które rozpoznają zmianę orientacji, poproszą użytkownika o zmianę orientacji, ponieważ aplikacja nie jest obsługiwana w takiej orientacji

Może się to zmienić w przyszłości => obecnie nie wpływa na nasz proces kompilacji, ale może się zmienić w przyszłości

trinadh thatakula
źródło
9

W Android studio 3.6.0 wydaje mi się, że chcą, aby użytkownik obsługiwał orientację i zachęcał programistę do korzystania z ViewModel . Pozwól mi wyjaśnić szczegółowo screenOrientation

android:screenOrientation="portrait"

da ci błąd, który musisz podać

android:screenOrientation="fullSensor" or android:screenOrientation="unspecified"

fullSensor Oznacza, że ​​albo masz opcję „Obróć”, albo nie, zmieni orientację w zależności od tego, jak poruszasz telefonem

nieokreślony Oznacza, że ​​jeśli masz WŁĄCZONY Obrót, pozostanie on tylko w tej orientacji, a jeśli nie, zmieni orientację w oparciu o ruch telefonu.

Rajat
źródło
4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Android
źródło
2
Czy możesz również wyjaśnić, jakie jest użycie tego kodu.
Rahul
2

Zastosowałem poniższą procedurę. Działa dla mnie idealnie. W Android studio 3.6.0 myślę, że chcą, aby użytkownik zajął się orientacją i zachęcił dewelopera do korzystania z ViewModel. Zastosuj poniższą procedurę, aby to zignorować.

Najpierw dodaj:

xmlns:android="http://schemas.android.com/apk/res/android"

w znaczniku manifestu.

Po drugie, dodaj

tools:ignore="LockedOrientationActivity" 

w znaczniku aplikacji. Happy Coding.

Shohel Rana
źródło
1

Znalazłem 2 sposoby rozwiązania tego problemu

Pierwszy,

Android Studio -> Preferences (or settings in Windows)
-> search "chrome" 
-> Uncheck "Activity is locked to an orientation" 
-> apply and ok 
-> Sync Project with Gradle flie

Po drugie, `

Select "Run" from the main menu 
-> Edit Configurations.
-> Launch options - Launch
-> select Nothing or Specified Activity
-> Sync Project with Gradle file
tktschool
źródło
1

Dodaj następujący wiersz po android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Następnie kliknij Alt+Enter

wprowadź opis zdjęcia tutaj

Damo Gurcinovski
źródło
0

Napotkałem ten problem, zgodnie z moim wymaganiem, niektóre działania będą obsługiwały obie orientacje, a resztki pozostaną w pozycji pionowej. W tym przypadku rozwiązałem następujące kroki:

Przypadek 1: - Aby zablokować orientację

Krok 1: Dodaj następujący wiersz Znacznik aplikacji w AndroidManifest.xml

tools: ignore = "LockedOrientationActivity"

<application
android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">

Krok 2: Jeśli chcesz zablokować orientację ekranu w pionie lub w poziomie, dodaj następujący wiersz w tagu aktywności

android: screenOrientation = „portret” lub „krajobraz”

Przypadek 2: Załóżmy, że chcesz zezwolić na orientację w konkretnej działalności i mieć specyficzny projekt krajobrazu

Krok 1: Usuń wartość Orientacji w zmianach konfiguracji i usuń orientację ekranu, jeśli istnieje ona z tagu aktywności, a moja osobista sugestia (LifecycleObserver) używa w Aktywności, aby nie tracić wartości podczas zmiany orientacji.

android: configChanges = "orientacja"
android: screenOrientation = „portret” lub „krajobraz”

W ten sposób rozwiązuję ten problem, mam nadzieję, że to pomaga, dzięki i szczęśliwego kodowania.

MohanRaj S.
źródło
0

Wypróbuj to rozwiązanie:

AndroidMainfest:

<activity
    android:name="com.ui.activity.SplashActivity"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Mam nadzieję że to pomoże!

R.Desai
źródło
ta odpowiedź nie działa, w Androidzie 3.6
Pedro Henrique
0

możesz użyć tego kodu:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
Abu Baker Nawaz
źródło
1
Dodaj wyjaśnienie do swojej odpowiedzi, aby inni mogli się z niej uczyć
Nico Haase,
jeśli portret orientacyjny zablokował orientację tego działania. co oznacza, że ​​orientacja nigdy nie zmieniła się w krajobraz.
Abu Baker Nawaz
Edytuj swoją odpowiedź, aby zawierała wszystkie wyjaśnienia
Nico Haase
-1

Spróbuj umieścić następujące w tagu aktywności

android:configChanges="orientation"
android:screenOrientation="portrait" 
Swayangjit
źródło
Nie pomoc To tryb pionowy i
poziomy
Zaktualizowałem odpowiedź, musisz dodać oba
Swayangjit
1
Nie działa w systemie Android Studio 3.6.
Evgen,