In AndroidManifest: Android in attesa: screenOrientation = "non specificato"


44

Android Studio 3.6.

Voglio che la mia app sia sempre in portraitmodalità. Quindi nel mio 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>

Eseguo l'app e SplashActivitymostra in portraitmodalità. Bello. Ma l'editor mostra il seguente errore:

Expecting android:screenOrientation="unspecified"

Perché?

Risposte:


69

Nel tag manifest (appena sotto xmlns:android="http://schemas.android.com/apk/res/android"), inserisci

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

Quindi, all'interno del tag dell'applicazione, inserisci

tools:ignore="LockedOrientationActivity"

o se hai già degli strumenti: ignora nel tag dell'applicazione quindi imposta come strumenti: ignore = "GoogleAppIndexingWarning, LockedOrientationActivity"
Mystery

20

riguarda solo Android Studio 3.6+

Qual è il problema qui? Questo problema si verifica perché il framework Android vuole che l'utente controlli l'orientamento dell'app stesso, non è consigliabile limitare l'orientamento dell'app, ad esempio se un utente desidera utilizzare l'app in orientamento orizzontale, capovolge semplicemente il dispositivo e i sensori faranno il lavoro ma quando un lo sviluppatore limita l'orientamento dello schermo, anche quando l'app del sensore di rotazione funziona in uno stato predefinito, in modo da limitare le capacità del dispositivo dell'utente.

Cosa fare adesso? Hai due opzioni., Innanzitutto è ignorare l'errore poiché non causerà alcun errore di compilazione anche se sto facendo lo stesso e la generazione apk / aab è come al solito Un'altra opzione è fornire layout orizzontali o gestire la rotazione come in alcuni le app che riconoscono se l'orientamento viene modificato chiederanno all'utente di cambiare l'orientamento poiché l'app non è supportata in tale orientamento

Potrebbe cambiare in futuro => al momento non sta influenzando il nostro processo di compilazione, ma potrebbe cambiare in futuro


9

In Android Studio 3.6.0 suppongo che vogliono che l'utente gestisca l'orientamento e incoraggi lo sviluppatore a usare roba ViewModel . Permettetemi di spiegare in dettaglio ScreenOrientation

android:screenOrientation="portrait"

ti darà un errore che devi specificare

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

fullSensor Significa che hai ON "Ruota off" o no cambierà l'orientamento in base a quando sposti il ​​telefono

Mezzi non specificati se hai ON il Rotate off allora rimarrà solo in quell'orientamento e in caso contrario cambierà l'orientamento in base al tuo spostamento del telefono.


4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"

2
Potete per favore spiegare anche a cosa serve questo codice.
Rahul,

2

Ho usato la seguente procedura. Funziona perfettamente per me. In Android Studio 3.6.0 penso che desiderino che l'utente gestisca l'orientamento e incoraggi lo sviluppatore a utilizzare roba ViewModel. Utilizzare la procedura seguente per ignorarlo.

Innanzitutto aggiungi:

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

nel tag manifest.

In secondo luogo, Aggiungi

tools:ignore="LockedOrientationActivity" 

nel tag dell'applicazione. Buona programmazione.


1

Ho trovato 2 modi per risolvere questo problema

Primo,

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

Secondo, `

Select "Run" from the main menu 
-> Edit Configurations.
-> Launch options - Launch
-> select Nothing or Specified Activity
-> Sync Project with Gradle file

1

Aggiungi la seguente riga dopo android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Quindi fai clic su Alt+Enter

inserisci qui la descrizione dell'immagine


0

Ho affrontato questo problema, Nel mio requisito, alcune attività supporteranno entrambi gli orientamenti e i resti rimarranno in verticale, In questo caso, ho risolto i seguenti passaggi:

Caso 1: - Per bloccare l'orientamento

Passaggio 1: aggiungere il seguente tag Applicazione riga in AndroidManifest.xml

Strumenti: ignore = "LockedOrientationActivity"

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

Passaggio 2: se si desidera bloccare l'orientamento dello schermo in verticale o in orizzontale, aggiungere la seguente riga nel tag attività

android: screenOrientation = "portrait" o "landscape"

Caso 2: - Supponiamo che tu voglia consentire l'orientamento in una determinata attività e avere un disegno specifico per il paesaggio

Step-1: Rimuovi il valore di Orientamento nei configchanges e rimuovi l'orientamento dello schermo se esiste dal tag attività, e il mio suggerimento personale usa (LifecycleObserver) in Attività per senza perdere valori mentre cambi orientamento.

android: configChanges = "orientamento"
android: screenOrientation = "portrait" o "landscape"

Questo è il modo in cui risolvo questo problema, spero che sia d'aiuto, grazie e buona programmazione.


0

Prova questa soluzione:

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>

Spero che sia di aiuto!


questa risposta non funziona, in Android 3.6
Pedro Henrique

0

puoi usare questo codice:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }

1
Per favore aggiungi qualche spiegazione alla tua risposta in modo che altri possano imparare da essa
Nico Haase,

se orientamento verticale bloccava l'orientamento di quell'attività. il che significa che l'orientamento non è mai cambiato in orizzontale.
Abu Baker Nawaz,

Modifica la tua risposta per contenere tutte le spiegazioni
Nico Haase,

-1

Prova a inserire quanto segue nel tag attività

android:configChanges="orientation"
android:screenOrientation="portrait" 

Non aiutare. È la modalità
verticale

Aggiornato la risposta, dovrai aggiungere entrambi
Swayangjit,

1
Non funziona su Android Studio 3.6.
Evgen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.