在 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>
我运行应用程序,SplashActivity
以portrait
模式显示。好的。
但是编辑器显示如下错误:
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开发中遇到的问题——Android中WARNING: Application does not specify an API level requirement!的解决方法