In AndroidManifest: Erwarten von Android: screenOrientation = "nicht angegeben"

44

Android Studio 3.6.

Ich möchte, dass meine App immer im portraitModus ist. Also in meinem 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>

Ich starte die App und SplashActivityzeige im portraitModus. Nett. Der Editor zeigt jedoch den folgenden Fehler an:

Expecting android:screenOrientation="unspecified"

Warum?

a_subscriber
quelle

Antworten:

67

Geben Sie in Ihr Manifest-Tag (knapp darunter xmlns:android="http://schemas.android.com/apk/res/android") ein

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

Dann in das Anwendungs-Tag einfügen

tools:ignore="LockedOrientationActivity"
Darragh MacKenna
quelle
oder wenn Sie bereits Tools haben: Im Anwendungs-Tag ignorieren, dann als Tools festlegen: ignore = "GoogleAppIndexingWarning, LockedOrientationActivity"
Mystery
20

Es betrifft nur Android Studio 3.6+

Was ist das Problem hier? Dieses Problem tritt auf, weil das Android-Framework möchte, dass der Benutzer die App-Ausrichtung selbst steuert. Es wird nicht empfohlen, die App-Ausrichtung einzuschränken. Wenn ein Benutzer die App beispielsweise im Querformat verwenden möchte, dreht er nur das Gerät um und die Sensoren erledigen die Arbeit, aber wenn a Entwickler beschränken die Bildschirmausrichtung, selbst wenn die Rotationssensor-App funktioniert, bleibt die App in einem vordefinierten Zustand, so dass Sie die Gerätefunktionen des Benutzers einschränken.

Was nun? Sie haben zwei Möglichkeiten. Erstens müssen Sie den Fehler ignorieren, da er selbst dann nicht zu einem Build-Fehler führt, wenn ich das Gleiche tue. Die Generierung von apk / aab erfolgt wie gewohnt. Eine weitere Option besteht darin, Querformat-Layouts bereitzustellen oder die Drehung wie in einigen Fällen zu handhaben Apps, die erkennen, wenn die Ausrichtung geändert wird, fordern den Benutzer auf, die Ausrichtung zu ändern, da die App in dieser Ausrichtung nicht unterstützt wird

Es kann sich in Zukunft ändern => Derzeit wirkt es sich nicht auf unseren Erstellungsprozess aus, aber es könnte sich in Zukunft ändern

Trinadh Thatakula
quelle
9

In Android Studio 3.6.0 soll der Benutzer die Orientierung übernehmen und Entwickler dazu ermutigen, ViewModel- Inhalte zu verwenden . Lassen Sie mich screenOrientation im Detail erklären

android:screenOrientation="portrait"

gibt Ihnen einen Fehler, den Sie entweder angeben müssen

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

fullSensor Bedeutet, dass Sie entweder die Option "Ausschalten" aktiviert haben oder nicht. Dadurch wird die Ausrichtung geändert, je nachdem, wie Sie das Telefon bewegen

nicht spezifiziert Bedeutet, wenn Sie die Option Drehen deaktiviert haben, bleibt sie nur in dieser Ausrichtung, und wenn nicht, ändert sie die Ausrichtung, je nachdem, wie Sie das Telefon bewegen.

Rajat
quelle
4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Android
quelle
2
Können Sie bitte auch erklären, wie dieser Code verwendet wird?
Rahul
2

Ich habe das folgende Verfahren angewendet. Es funktioniert perfekt für mich. In Android Studio 3.6.0 möchte ich, dass der Benutzer die Ausrichtung übernimmt und den Entwickler dazu ermutigt, ViewModel-Inhalte zu verwenden. Verwenden Sie das folgende Verfahren, um dies zu ignorieren.

Zuerst hinzufügen:

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

im Manifest-Tag.

Zweitens hinzufügen

tools:ignore="LockedOrientationActivity" 

im Anwendungs-Tag. Viel Spaß beim Codieren.

Shohel Rana
quelle
1

Ich habe zwei Möglichkeiten gefunden, um dieses Problem zu lösen

Zuerst,

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

Zweitens `

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

Fügen Sie die folgende Zeile hinzu android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Klicken Sie dann auf Alt+Enter

Geben Sie hier die Bildbeschreibung ein

Damo Gurcinovski
quelle
0

Ich bin mit diesem Problem konfrontiert. In meiner Anforderung unterstützt ein Teil der Aktivität beide Ausrichtungen und bleibt im Hochformat. In diesem Fall habe ich die folgenden Schritte ausgeführt:

Fall 1: - Zum Sperren der Ausrichtung

Schritt 1: Fügen Sie in AndroidManifest.xml das folgende Zeile- Anwendungs-Tag hinzu

tools: ignore = "LockedOrientationActivity"

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

Schritt 2: Wenn Sie die Bildschirmausrichtung im Hoch- oder Querformat sperren möchten, fügen Sie die folgende Zeile in das Aktivitäts-Tag ein

android: screenOrientation = "Hochformat" oder "Querformat"

Fall 2: - Angenommen, Sie möchten eine Orientierung für eine bestimmte Aktivität zulassen und ein bestimmtes Design für die Landschaft haben

Schritt 1: Entfernen Sie den Orientierungswert in Konfigurationsänderungen und entfernen Sie die Bildschirmorientierung, falls vorhanden, aus dem Aktivitäts-Tag. Mein persönlicher Vorschlag verwendet (LifecycleObserver) in Aktivität, ohne Werte zu verlieren, während Sie die Orientierung ändern.

android: configChanges = "Ausrichtung"
android: screenOrientation = "Hochformat" oder "Querformat"

Auf diese Weise löse ich dieses Problem. Ich hoffe, es hilft. Danke und Happy Coding.

MohanRaj S.
quelle
0

Versuchen Sie diese Lösung:

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>

Hoffe das hilft!

R. Desai
quelle
Diese Antwort funktioniert nicht in Android 3.6
Pedro Henrique
0

Sie können diesen Code verwenden:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
Abu Baker Nawaz
quelle
1
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu, damit andere daraus lernen können
Nico Haase
Wenn das Orientierungsporträt die Ausrichtung dieser Aktivität gesperrt hat. Das heißt, die Ausrichtung hat sich nie in Landschaft geändert.
Abu Baker Nawaz
Bitte bearbeiten Sie Ihre Antwort, um alle Erklärungen zu enthalten
Nico Haase
-1

Versuchen Sie, Folgendes in das Aktivitäts-Tag einzufügen

android:configChanges="orientation"
android:screenOrientation="portrait" 
Swayangjit
quelle
Nicht helfen. Es ist Hoch- und
Querformat
Aktualisiert die Antwort müssen Sie beide hinzufügen
Swayangjit
1
Es funktioniert nicht unter Android Studio 3.6.
Evgen