En AndroidManifest: Esperando android: screenOrientation = "unspecified"

44

Android Studio 3.6.

Quiero que mi aplicación esté siempre en portraitmodo. Entonces en mi 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>

Ejecuto la aplicación y se SplashActivitymuestra en portraitmodo. Agradable. Pero el editor muestra el siguiente error:

Expecting android:screenOrientation="unspecified"

¿Por qué?

un_suscriptor
fuente

Respuestas:

69

En su etiqueta de manifiesto (justo debajo xmlns:android="http://schemas.android.com/apk/res/android"), ponga

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

Luego, dentro de la etiqueta de la aplicación, coloque

tools:ignore="LockedOrientationActivity"
Darragh MacKenna
fuente
o si ya tiene herramientas: ignore en la etiqueta de la aplicación y luego configúrelas como herramientas: ignore = "GoogleAppIndexingWarning, LockedOrientationActivity"
Mystery hace
20

solo afecta a Android Studio 3.6+

¿Cuál es el problema aquí? Este problema se produce porque el marco de Android quiere que el usuario controle la orientación de la aplicación por sí mismo; no se recomienda restringir la orientación de la aplicación, por ejemplo, si un usuario desea usar la aplicación en orientación horizontal, simplemente voltea el dispositivo y los sensores harán el trabajo, pero cuando un el desarrollador restringe la orientación de la pantalla, incluso cuando el sensor de rotación funciona, la aplicación se mantendrá en un estado predefinido, de una manera que está restringiendo las capacidades del dispositivo del usuario.

¿Qué hacer ahora? Tiene dos opciones. Primero, ignorar el error, ya que no causará ningún error de compilación, incluso yo estoy haciendo lo mismo, y la generación de apk / aab es la habitual. Otra opción es proporcionar diseños de paisaje o manejar la rotación como en algunos aplicaciones que reconocen que si se cambia la orientación, solicitarán al usuario que cambie la orientación ya que la aplicación no es compatible con dicha orientación

Puede cambiar en el futuro => en la actualidad no está afectando nuestro proceso de compilación pero puede cambiar en el futuro

Trinadh thatakula
fuente
9

En Android studio 3.6.0, creo que quieren que el usuario maneje la orientación y aliente al desarrollador a usar cosas de ViewModel . Déjame explicarte screenOrientation en detalle

android:screenOrientation="portrait"

le dará un error que tiene que especificar

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

fullSensor Significa que tiene activado el "Rotar apagado" o que no cambiará la orientación según mueva el teléfono

no especificado Significa que si tiene el botón giratorio apagado, permanecerá solo en esa orientación y, de lo contrario, cambiará la orientación según mueva el teléfono.

Rajat
fuente
4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Androide
fuente
2
¿Puede explicar también cuál es el uso de este código?
Rahul
2

He utilizado el siguiente procedimiento. Funciona perfectamente para mí. En Android studio 3.6.0 creo que quieren que el usuario maneje la orientación y aliente al desarrollador a usar cosas de ViewModel. Utilice el siguiente procedimiento para ignorar eso.

Primero agregue:

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

en la etiqueta de manifiesto.

En segundo lugar, agregue

tools:ignore="LockedOrientationActivity" 

en la etiqueta de la aplicación Feliz codificación.

Shohel Rana
fuente
1

Encontré 2 formas de resolver este problema

Primero,

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

Segundo, `

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

Añadir la siguiente línea después android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Luego haga clic en Alt+Enter

ingrese la descripción de la imagen aquí

Damo Gurcinovski
fuente
0

Me he enfrentado a este problema, en mi requerimiento, parte de la actividad apoyará ambas orientaciones y los restos se mantendrán en el retrato. En este caso, resolví los siguientes pasos:

Caso 1: - Para bloquear la orientación

Paso 1: Agregue la siguiente etiqueta de aplicación de línea en AndroidManifest.xml

herramientas: ignore = "LockedOrientationActivity"

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

Paso 2: si desea bloquear la orientación de la pantalla en vertical u horizontal, agregue la siguiente línea en la etiqueta de actividad

android: screenOrientation = "retrato" o "paisaje"

Caso 2: suponga que si desea permitir la orientación en una actividad particular y tener un diseño específico para el paisaje

Paso 1: Eliminar el valor de Orientación en los cambios de configuración y eliminar la orientación de la pantalla si existe de la etiqueta de actividad, y mi sugerencia personal usa (LifecycleObserver) en Actividad sin perder valores al cambiar la orientación.

android: configChanges = "orientación"
android: screenOrientation = "retrato" o "paisaje"

Esta es la forma en que resuelvo este problema, espero que ayude, gracias y feliz codificación.

MohanRaj S
fuente
0

Prueba esta solución:

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>

¡Espero que esto ayude!

R.Desai
fuente
esta respuesta no funciona, en android 3.6
Pedro Henrique
0

puedes usar este código:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
Abu Baker Nawaz
fuente
1
Agregue alguna explicación a su respuesta para que otros puedan aprender de ella
Nico Haase
si el retrato de orientación bloqueó la orientación de esa actividad. lo que significa que la orientación nunca cambió al paisaje.
Abu Baker Nawaz
Edite su respuesta para contener toda la explicación
Nico Haase
-1

Intenta poner lo siguiente en la etiqueta de actividad

android:configChanges="orientation"
android:screenOrientation="portrait" 
Swayangjit
fuente
No ayuda. Es modo vertical y horizontal
suscriptor del
Se actualizó la respuesta que tendrá que agregar ambos
Swayangjit
1
No funciona en Android Studio 3.6.
Evgen