在我的应用中,我只有以下活动:MainActivity
。按照AndroidManifest.xml中的指定,应该以纵向模式保持锁定状态:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@style/noPreview"
</activity>
在我的Samsung Galaxy S8(Android 8.0)上,无论我如何旋转手机,手机都将保持预期的人像状态。但我注意到,在Samsung Galaxy S4 Mini(Android 4.1)上,倾斜时会切换并导致应用崩溃。如果从横向启动,则切换到Portait时会崩溃。
栈上的其他问题说:
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
在<activity>
元素中可以解决此问题,但是已经声明了它们。
这里还有什么问题?
答案 0 :(得分:0)
请从控制台提供error log
。这会很有帮助。可能设备不支持此模式。 manifest
看起来不错。
到目前为止,我只能猜测:
onCreate
也许某些代码由于横向启动时方向改变而执行了两次。也许您在那里指定其他方向。
https://developer.android.com/guide/topics/manifest/activity-element#screen
<uses-feature android:name="android.hardware.screen.portrait"/>. This is purely a filtering behavior provided by Google Play (and other services that support it) and the platform itself does not control whether your app can be installed when a device supports only certain orientations.
在您的MainActivity
下方的setContentView()
中写下:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);