当前位置: 首页 > 知识库问答 >
问题:

锁定屏幕方向时,目标Android API 27与非不透明的活动

宰修能
2023-03-14

我有一个活动,其中android:windowIsTranslucent设置为trueandroid:windowBackground设置为半透明背景。我刚刚更改了我的目标并编译sdk版本到27,现在启动此活动时遇到异常:

java.lang.IllegalStateException:只有全屏不透明活动才能请求定向

由于这是一个新的sdk,目前还没有任何在线信息(它似乎来自以下代码行:https://android.googlesource.com/platform/frameworks/base.git//master/core/java/android/app/Activity。java#987)

有什么办法可以解决这个问题吗?如果我从我的此活动清单中取出android: ScreOrience="(肖像),该应用程序不会崩溃,但我希望能够保持这样。

共有3个答案

蓟浩旷
2023-03-14

对我有效的解决方法是删除

android:screenOrientation="portrait" 

从所有全屏透明的活动,这意味着他们的主题包含

<item name="android:windowIsTranslucent">true</item>

为了确保Oreo下面的方向正确,我将其添加到活动的onCreate()中。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // This activity is a fullscreen transparent activity, so after Oreo Android doesn't allow fullscreen
    // transparent activities to specify android:screenOrientation="portrait" in the manifest. It will pick up
    // from the background activity. But for below Oreo we should make sure that requested orientation is portrait.
    if (VERSION.SDK_INT < VERSION_CODES.O) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}
刘兴朝
2023-03-14

解决方法是将Target etSdk设置回26

你的应用程序崩溃的原因就在这里。

正如您在此处看到的,您不是唯一一个 - 此行为已作为问题报告给Google。它已被修复,但我们不知道如何以及何时发布。

我还可以证实“sofakingforever”在评论中所说的话,如果半透明后有固定方向的非半透明活动,半透明将不会旋转。因此,您也可以从清单中删除android:screenOrientation=“portrait”。

万俟飞语
2023-03-14

我也面临着同样的问题。正如其他人所说,如果我删除了android:屏幕方向=“肖像”或用android:屏幕方向=“未指定”覆盖它,那么异常就消失了。似乎前面活动的方向遵循后面活动的方向。

我想过了。如果前面的活动是透明的,而后面的活动的方向不同,显示会变得奇怪。所以,我可以理解为什么增加了这个检查逻辑,但是,我想知道为什么这个问题在开发者预览版8.0.0中没有出现。

 类似资料:
  • 问题内容: 我有一个具有一个活动设置,并设置成半透明的背景。我只是将目标更改为,并将sdk版本编译为27,现在启动此活动时出现异常: 由于这是一个新的SDK,因此尚无任何在线信息(它似乎是由以下代码行导致的:https://android.googlesource.com/platform/frameworks/base.git/+/master/核心/java/android/app/Activ

  • 问题内容: 从Android 8.0 Oreo java.lang.IllegalStateException中的通讯录中检索联系人时,我遇到了问题:仅全屏不透明活动可以请求定向 我正在尝试从电话通讯录中获取活动中的联系信息,它非常适合棒棒糖,棉花糖,牛轧糖等,但对于奥利奥这样的错误会给我带来这种错误,请帮助我。我的代码在这里。 演示代码:- 错误日志: 问题答案: 当目标sdk为28时,问题似乎

  • 我在Android 8.0 Oreo Java . lang . illegalstateexception中从通讯录中检索联系人时遇到了这个问题:只有全屏不透明的活动才能请求定向 我正在尝试从电话通讯录中获取我活动中的联系人,它非常适合Lollipop、Marshmallow、牛轧糖等,但它会给我奥利奥这样的错误,请帮帮我。我的代码在下面。 演示代码:- 错误日志:-

  • 我正在编写一个应用程序来管理或自定义Android设备的解锁屏幕。它的工作原理如下: 用户使用电源按钮锁定屏幕。 用户尝试解锁屏幕,从而再次按下电源按钮 我的活动弹出--屏幕仍然锁定 用户回答问题,如果答案正确,屏幕解锁 我已经为第三步创建了一个活动,并将以下代码添加到其方法中: 这工作正常,完全符合我的期望。我的问题是第四步。我已经搜索并找到了许多解决方案,但没有一个适合我。 如何以编程方式锁定

  • 即使屏幕被锁定,如何在设备上开始活动。我尝试了下面的方法,但是不起作用。 广播接收器:

  • 脸书 SDK 版本 4.27.0 Android操作系统版本8.0 应用程序崩溃,但有例外,这是我在Crashlytics上找到的跟踪日志: 任何人都可以帮我这个吗? PS:在Android Source中,在查看了这条线号987之后,似乎这条线就是罪魁祸首。 https://Android . Google source . com/platform/frameworks/base . git/