Android app targetSdk升级到27碰到的一个bug

Android AUmaWSsSoi 2个月前 (08-09) 103次浏览 0个评论
文章目录[隐藏]

问题描述

最近一个再做一个大需求,心血来潮,将app的targetSdk升级到了api27,一切用的都很正常,之前一直在国产手机上使用,如小米,华为等,今天到了快发版的阶段,拿起了一个google原生手机安装测试,直接打开就crash了,真是惊呆了本宝宝啊。
通过抓log,获取到如下日志。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.superrhino.r
arering/com.superrhino.rare.LaunchActivity}: java.lang.IllegalStateException: Only
fullscreen opaque activities can request orientation

经过一番查阅资料

发现有个作者跟我碰到了同样的问题,他也是将targetSdk升级到了27,然后启动页就crash了,启动页设置的是全屏展示,Activity主题是

<item name=”android:windowIsTranslucent”>true</item>
<item name=”android:windowFullscreen”>true</item>
在Android源码中,ActivityRecord.java文件里面,有这么一段判断逻辑

void setRequestedOrientation(int requestedOrientation) {
    if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen
            && appInfo.targetSdkVersion >= O_MR1) {
        throw new IllegalStateException("Only fullscreen activities can request orientation");
    }

    final int displayId = getDisplayId();
    final Configuration displayConfig =
            mStackSupervisor.getDisplayOverrideConfiguration(displayId);

    final Configuration config = mWindowContainerController.setOrientation(requestedOrientation,
            displayId, displayConfig, mayFreezeScreenLocked(app));
    if (config != null) {
        frozenBeforeDestroy = true;
        if (!service.updateDisplayOverrideConfigurationLocked(config, this,
                false /* deferResume */, displayId)) {
            mStackSupervisor.resumeFocusedStackTopActivityLocked();
        }
    }
    service.mTaskChangeNotificationController.notifyActivityRequestedOrientationChanged(
            task.taskId, requestedOrientation);
}
将App代码中的targetSdk设置为27后,搜索ActivityRecord.java类,然后检索setRequestedOrientation方法,就能够看到上面的代码
默认情况下,我们的Activity在xml中设置了 android:screenOrientation=”portrait”同时app的主题也是fullscreen,奇怪的是我的几款手机有api27,api28的,都是国内厂商的,都没有出现这个问题,只有在google nexus上碰到了,感觉很奇怪,有点怀疑是不是国内厂商做了修改。

目前还是将targetSdk修改为26,临时解决此问题。


java问与答 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:http://javaexception.com/archives/184
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址