在 AndroidManifest 中:期望 android:screenOrientation="unspecified"

a_s*_*ber 72 android screen-orientation android-manifest

安卓工作室 3.6。

我希望我的应用程序始终处于portrait模式。所以在我的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>
Run Code Online (Sandbox Code Playgroud)

我运行该应用程序并SplashActivityportrait模式显示。好的。但是编辑器显示以下错误:

Expecting android:screenOrientation="unspecified"
Run Code Online (Sandbox Code Playgroud)

为什么?

小智 121

在您的清单标签中(就在 下xmlns:android="http://schemas.android.com/apk/res/android"),放入

xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

然后在应用程序标签内,放

tools:ignore="LockedOrientationActivity"
Run Code Online (Sandbox Code Playgroud)

  • 或者如果您已经在应用程序标记中拥有工具:忽略,则设置为工具:ignore =“GoogleAppIndexingWarning,LockedOrientationActivity” (9认同)

小智 25

它只影响 Android Studio 3.6+

这里的问题是什么?出现此问题是因为 android 框架希望用户自己控制应用程序方向,因此不建议限制您的应用程序方向,例如,如果用户想以横向方式使用应用程序,他只需翻转设备,传感器即可完成工作,但是当开发人员限制屏幕方向,即使旋转传感器工作,应用程序也将保持预定义状态,以限制用户设备功能的方式。

现在做什么?你有两个选择。,首先是忽略错误,因为它不会导致任何构建失败,即使我在做同样的事情并且 apk/aab 生成和往常一样另一个选项是提供横向布局或像在某些情况下那样处理旋转识别方向是否更改的应用程序会提示用户更改方向,因为该应用程序不支持此类方向

它可能会在未来发生变化 => 目前它不会影响我们的构建过程,但它可能会在未来发生变化

  • - 嘿!工程师希望限制应用程序在横向模式下使用。让我们给他们 screenOrientation 标签。过了一会儿: - 嘿!用户希望通过手机旋转来控制方向。让我们限制 screenOrientation 标签的使用。 (8认同)

Raj*_*jat 11

在 Android studio 3.6.0 中,我猜他们希望用户处理方向并鼓励开发人员使用ViewModel 的东西。让我详细解释 screenOrientation

android:screenOrientation="portrait"

会给你错误你必须指定

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

fullSensor意味着要么你打开了“旋转关闭”,要么它会根据你移动手机改变方向

未指定意味着如果您打开旋转关闭,那么它只会保持在那个方向,如果没有,那么它将根据您移动手机改变方向。


小智 7

之后添加以下行android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"
Run Code Online (Sandbox Code Playgroud)

然后点击Alt+Enter

在此输入图像描述


小智 5

tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下这段代码的用途吗? (2认同)

小智 5

我找到了解决这个问题的两种方法

第一的,

Android Studio -> Preferences (for Mac) or Settings (for Windows)
-> Search "chrome" 
-> Uncheck "Activity is locked to an orientation" 
-> Apply and Ok 
-> Sync Project with Gradle file
Run Code Online (Sandbox Code Playgroud)

第二,

Select "Run" from the main menu 
-> Edit Configurations.
-> Launch options - Launch
-> Select Nothing or Specified Activity
-> Sync Project with Gradle file
Run Code Online (Sandbox Code Playgroud)