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é?

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"

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


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.


4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"

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.


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

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í


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.


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!


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);
    }

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" 

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.