web-dev-qa-db-fra.com

Dans AndroidManifest: Expecting Android: screenOrientation = "unspecified"

Android Studio 3.6.

Je souhaite que mon application soit toujours en mode portrait. Donc dans mon 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>

J'exécute l'application et SplashActivity s'affiche en mode portrait. Agréable. Mais l'éditeur affiche l'erreur suivante:

Expecting Android:screenOrientation="unspecified"

Pourquoi?

27
a_subscriber

Dans votre balise manifeste (juste en dessous de xmlns:Android="http://schemas.Android.com/apk/res/Android"), mettez

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

Puis à l'intérieur de la balise d'application, mettez

tools:ignore="LockedOrientationActivity
30
Darragh MacKenna

cela n'affecte que Android Studio 3.6+

Quel est le problème ici? Ce problème se produit car Android framework veut que l'utilisateur contrôle lui-même l'orientation de l'application, il n'est pas conseillé de restreindre l'orientation de votre application, par exemple si un utilisateur souhaite utiliser l'application en orientation paysage, il retourne simplement l'appareil et les capteurs feront le travail, mais lorsqu'un développeur restreint l'orientation de l'écran, même lorsque l'application de capteur de rotation fonctionne, elle restera dans un état prédéfini, d'une manière que vous restreignez les capacités de l'appareil de l'utilisateur.

Que faire maintenant? Vous avez deux options., La première consiste à ignorer l'erreur car elle ne causera aucun échec de construction, même si je fais la même chose et la génération apk/aab est comme d'habitude Une autre option consiste à fournir des dispositions de paysage ou à gérer la rotation comme dans certains les applications qui reconnaissent si l'orientation est modifiée, elles inviteront l'utilisateur à changer l'orientation car l'application n'est pas prise en charge dans une telle orientation

Cela peut changer à l'avenir => à l'heure actuelle, cela n'affecte pas notre processus de construction, mais cela pourrait changer à l'avenir

12
trinadh thatakula

Dans Android studio 3.6.0, je suppose qu'ils veulent que l'utilisateur gère l'orientation et encourage le développeur à utiliser ViewModel des trucs. Permettez-moi d'expliquer screenOrientation en détail

Android:screenOrientation="portrait"

vous donnera une erreur, vous devez soit spécifier

Android:screenOrientation="fullSensor" or Android:screenOrientation="unspecified"

fullSensor Signifie que vous avez activé le "Rotation désactivée" ou non, cela changera l'orientation en fonction du déplacement du téléphone

non spécifié signifie que si vous avez activé la fonction Rotation désactivée, elle restera uniquement dans cette orientation et sinon, elle changera l'orientation en fonction du déplacement du téléphone.

6
Rajat

J'ai utilisé la procédure ci-dessous. Cela fonctionne parfaitement pour moi. Dans Android studio 3.6.0, je pense qu'ils veulent que l'utilisateur gère l'orientation et encourage le développeur à utiliser les choses de ViewModel. Utilisez la procédure ci-dessous pour ignorer cela.

Ajoutez d'abord:

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

dans la balise manifest.

Deuxièmement, ajouter

tools:ignore="LockedOrientationActivity" 

dans la balise d'application. Codage heureux.

2
Shohel Rana

J'ai trouvé 2 façons de résoudre ce problème

Première,

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

Deuxièmement, `

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

Ajouter la ligne suivante après Android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Puis clique Alt+Enter

enter image description here

0
Damo Gurcinovski
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
0
Android

J'ai fait face à ce problème, dans mon exigence, une partie de l'activité soutiendra les deux orientations et les restes resteront en portrait, dans ce cas, j'ai résolu par les étapes suivantes:

Cas-1: - Pour verrouiller l'orientation

Étape 1: Veuillez ajouter la ligne suivante Balise d'application dans AndroidManifest.xml

tools: ignore = "LockedOrientationActivity"

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

Étape 2: Si vous souhaitez verrouiller l'orientation de l'écran en mode portrait ou paysage, ajoutez la ligne suivante dans la balise d'activité

Android: screenOrientation = "portrait" ou "paysage"

Cas-2: - Supposons que si vous voulez permettre l'orientation dans une activité particulière et avoir une conception spécifique pour le paysage

Étape 1: Supprimer la valeur d'orientation dans les changements de configuration et supprimer l'orientation de l'écran si elle existe dans la balise d'activité, et ma suggestion personnelle utilise (LifecycleObserver) dans Activité pour sans perdre de valeurs lors du changement d'orientation.

Android: configChanges = "orientation"
Android: screenOrientation = "portrait" ou "paysage"

C'est la façon dont je résous ce problème, j'espère que cela aide, merci et bon codage.

0
MohanRaj S

Essayez de mettre ce qui suit dans la balise d'activité

Android:configChanges="orientation"
Android:screenOrientation="portrait" 
0
Swayangjit

Essayez cette solution:

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>

J'espère que cela t'aides!

0
R.Desai