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

Posted

技术标签:

【中文标题】在 AndroidManifest 中:期待 android:screenOrientation="unspecified"【英文标题】:In AndroidManifest: Expecting android:screenOrientation="unspecified" 【发布时间】:2020-02-19 11:23:35 【问题描述】:

android Studio 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>

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

Expecting android:screenOrientation="unspecified"

为什么?

【问题讨论】:

【参考方案1】:

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

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

然后在应用标签里面,放

tools:ignore="LockedOrientationActivity"

【讨论】:

或者如果你已经有 tools:ignore in application tag 然后设置为 tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"【参考方案2】:

它只影响 Android Studio 3.6+

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

现在该怎么办? 你有两个选择。, 首先是忽略该错误,因为即使我这样做也不会导致任何构建失败,并且 apk/aab 生成照常 另一种选择是提供横向布局或像在某些应用程序中那样处理旋转,这些应用程序可以识别方向是否发生变化,它们会提示用户更改方向,因为该方向不支持应用程序

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

【讨论】:

- 嘿!工程师希望限制应用程序在横向模式下使用。让我们给他们 screenOrientation 标签。一会儿: - 嘿!用户希望通过手机旋转来控制方向。让我们限制使用 screenOrientation 标签。【参考方案3】:

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

android:screenOrientation="portrait"

会给你错误,你必须指定

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

fullSensor 表示您是否开启了“旋转关闭”功能,它会根据您移动手机而改变方向

未指定表示如果您打开了“旋转”关闭,那么它将仅保持在该方向,否则它将根据您移动手机而改变方向。

【讨论】:

【参考方案4】:

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

tools:ignore="LockedOrientationActivity"

然后点击Alt+回车

【讨论】:

你能解释一下原因吗? 我不能...这个错误已在最新版本的Android Studio中得到修复...这是Android Studio黄点的推荐...【参考方案5】:
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"

【讨论】:

能否请您解释一下这段代码的用途。【参考方案6】:

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

首先,

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

第二,

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

【讨论】:

【参考方案7】:

我使用了以下程序。它非常适合我。在 Android Studio 3.6.0 中,我认为他们希望用户处理方向并鼓励开发人员使用 ViewModel 的东西。使用下面的过程忽略它。

首先添加:

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

在清单标签中。

其次,添加

tools:ignore="LockedOrientationActivity" 

在应用程序标签中。快乐编码。

【讨论】:

【参考方案8】:

我遇到了这个问题,在我的要求中,一些活动将支持两个方向,并且保持纵向,在这种情况下,我通过以下步骤解决:

案例 1:- 锁定方向

第 1 步: 请在 AndroidManifest.xml 中添加以下行 Application 标签

tools:ignore="LockedOrientationActivity"

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

第 2 步:如果您想锁定纵向或横向屏幕方向 在活动标签中添加以下行

android:screenOrientation="portrait" 或 "landscape"

案例 2:- 假设您是否希望在特定活动中允许定向并有特定的横向设计

第 1 步: 移除 configchanges 中的 Orientation 值并移除屏幕方向(如果它存在于活动标签中),我个人建议在 Activity 中使用 (LifecycleObserver) 以在更改方向时不丢失值。

android:configChanges="orientation" android:screenOrientation="portrait" or "landscape"

这是我解决此问题的方法,希望对您有所帮助,谢谢并祝编码愉快。

【讨论】:

【参考方案9】:

试试下面的代码:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT)
    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

【讨论】:

请在您的答案中添加一些解释,以便其他人可以从中学习 如果方向纵向锁定了该活动的方向。这意味着方向永远不会变成横向。【参考方案10】:

尝试将以下内容放入活动标签中

android:configChanges="orientation"
android:screenOrientation="portrait" 

【讨论】:

没有帮助。这是纵向和横向模式 更新了你必须同时添加的答案

以上是关于在 AndroidManifest 中:期待 android:screenOrientation="unspecified"的主要内容,如果未能解决你的问题,请参考以下文章

Android APK用途及使用小结(待续)

Android APK用途及使用小结(待续)

Android APK用途及使用小结(待续)

Android开发中遇到的问题——Android中WARNING: Application does not specify an API level requirement!的解决方法

Matlab - 矩阵的 2 次方

在 Android Studio 的 AndroidManifest.xml 中添加权限?