No AndroidManifest: à espera do android: screenOrientation = "não especificado"

44

Android Studio 3.6.

Quero que meu aplicativo esteja sempre no portraitmodo. Então no meu 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>

Eu corro o aplicativo e SplashActivitymostra no portraitmodo. Agradável. Mas o editor mostra o seguinte erro:

Expecting android:screenOrientation="unspecified"

Por quê?

a_subscriber
fonte

Respostas:

68

Na sua etiqueta de manifesto (logo abaixo xmlns:android="http://schemas.android.com/apk/res/android"), coloque

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

Em seguida, dentro da tag do aplicativo, coloque

tools:ignore="LockedOrientationActivity"
Darragh MacKenna
fonte
ou se você já possui ferramentas: ignorar na tag do aplicativo e defina como ferramentas: ignore = "GoogleAppIndexingWarning, LockedOrientationActivity"
Mistério
20

afeta apenas o Android Studio 3.6 ou superior

Qual é o problema aqui? Esse problema ocorre porque a estrutura do Android deseja que o usuário controle a orientação do aplicativo, não é recomendável restringir a orientação do aplicativo, por exemplo, se um usuário deseja usá-lo na orientação paisagem, ele apenas vira o dispositivo e os sensores fazem o trabalho, mas quando um o desenvolvedor restringe a orientação da tela, mesmo quando o sensor de rotação funciona, o aplicativo permanece em um estado predefinido, de maneira a restringir os recursos do dispositivo do usuário.

O que fazer agora? Você tem duas opções., Primeiro é ignorar o erro, pois não causará nenhuma falha de compilação, mesmo fazendo o mesmo e a geração apk / aab é como de costume Outra opção é fornecer layouts de paisagem ou lidar com a rotação como em alguns aplicativos que reconhecem se a orientação é alterada, eles solicitarão que o usuário altere a orientação, pois o aplicativo não é suportado nessa orientação

Pode mudar no futuro => no momento, não está afetando nosso processo de compilação, mas pode mudar no futuro

Trinadh Thatakula
fonte
9

No Android studio 3.6.0, acho que eles querem que o usuário lide com a orientação e incentive o desenvolvedor a usar coisas do ViewModel . Deixe-me explicar a screenOrientation em detalhes

android:screenOrientation="portrait"

lhe dará erro, você deve especificar

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

fullSensor Significa que você está ligado no "Desligar" ou não, isso mudará a orientação com base na movimentação do telefone

não especificado Significa que se você estiver com o botão Girar desativado, ele permanecerá apenas nessa orientação e, caso contrário, mudará a orientação com base na movimentação do telefone.

Rajat
fonte
4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Android
fonte
2
Você também pode explicar qual é o uso deste código.
Rahul
2

Eu usei o procedimento abaixo. Funciona perfeitamente para mim. No Android studio 3.6.0, acho que eles querem que o usuário lide com a orientação e incentive o desenvolvedor a usar coisas do ViewModel. Use o procedimento abaixo para ignorar isso.

Adicionar em primeiro lugar:

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

na etiqueta do manifesto.

Em segundo lugar, adicione

tools:ignore="LockedOrientationActivity" 

na tag do aplicativo. Feliz codificação.

Shohel Rana
fonte
1

Eu encontrei 2 maneira de resolver este problema

Primeiro,

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
fonte
1

Adicione a seguinte linha após android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Depois clique em Alt+Enter

insira a descrição da imagem aqui

Damo Gurcinovski
fonte
0

Eu enfrentei esse problema. Na minha exigência, algumas atividades suportam as orientações e os restos permanecerão em retrato. Nesse caso, resolvi com as seguintes etapas:

Caso 1: - Para bloquear a orientação

Etapa 1: adicione a seguinte tag de aplicativo da linha no AndroidManifest.xml

ferramentas: ignore = "LockedOrientationActivity"

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

Etapa 2: se você deseja bloquear a orientação da tela em retrato ou paisagem, adicione a seguinte linha na tag de atividade

android: screenOrientation = "retrato" ou "paisagem"

Caso 2: - Suponha que você queira permitir orientação em determinada atividade e tenha um design específico para paisagem

Etapa 1: Remover o valor de Orientação nas configurações e remover a orientação da tela, se existir, da tag de atividade, e minha sugestão pessoal usará (LifecycleObserver) em Activity para sem perder valores ao alterar a orientação.

android: configChanges = "orientação"
android: screenOrientation = "retrato" ou "paisagem"

É assim que resolvo esse problema. Espero que ajude, obrigado e feliz codificação.

MohanRaj S
fonte
0

Experimente esta solução:

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 isto ajude!

R.Desai
fonte
esta resposta não está funcionando, no android 3.6
Pedro Henrique
0

você pode usar este código:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
Abu Baker Nawaz
fonte
11
Por favor, adicione alguma explicação à sua resposta para que outras pessoas possam aprender com ela
Nico Haase
se o retrato da orientação bloqueou a orientação dessa atividade. o que significa que a orientação nunca mudou para paisagem.
Abu Baker Nawaz
Edite sua resposta para conter todas as explicações
Nico Haase
-1

Tente colocar o seguinte na tag de atividade

android:configChanges="orientation"
android:screenOrientation="portrait" 
Swayangjit
fonte
Não ajuda. É modo retrato e paisagem
a_subscriber 23/10/19
Atualizado a resposta, você terá que adicionar os dois #
Swayangjit 23/10/19
11
Não funciona no Android Studio 3.6.
Evgen 25/02