尽管仅指定了纵向,但在某些Android设备上,屏幕方向仍更改为横向

时间:2018-07-17 21:23:37

标签: android

在我的应用中,我只有以下活动: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>元素中可以解决此问题,但是已经声明了它们。

这里还有什么问题?

1 个答案:

答案 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);